Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Prctica No.: 04
Tema:
Objetivos:
Marco terico:
Ejercicios
Anlisis de resultados:
- Insercin Directa
El mtodo de ordenacin por insercin directa consiste en recorrer todo el array
comenzando desde el segundo elemento hasta el final. Para cada elemento, se trata de
colocarlo en el lugar correcto entre todos los elementos anteriores a l o sea entre los
elementos a su izquierda en el array.
Dada una posicin actual p, el algoritmo se basa en que los elementos A[0], A[1], ..., A[p-
1] ya estn ordenados.
En el peor de los casos, el tiempo de ejecucin en O(n2).
En el mejor caso (cuando el array ya estaba ordenado), el tiempo de ejecucin de este
mtodo de ordenamiento es O(n).
El caso medio depender de cmo estn inicialmente distribuidos los elementos. Cuanto
ms ordenada est inicialmente ms se acerca a O(n) y cuanto ms desordenada, ms
se acerca a O(n2).
El peor caso el mtodo de insercin directa es igual que en los mtodos de burbuja y
seleccin, pero el mejor caso podemos tener ahorros en tiempo de ejecucin.
- Insercin Binaria
ESCUELA POLITCNICA NACIONAL
FACULTAD DE INGENIERA DE SISTEMAS
INGENIERA DE SISTEMAS INFORMTICOS Y DE COMPUTACIN
- Seleccin Directa
El algoritmo de ordenacin por el mtodo de seleccin directa es un algoritmo
relativamente sencillo y uno de los ms fciles de recordar e implementar.
Se basa en realizar varias pasadas, intentando encontrar en cada una de ellas el
elemento que segn el criterio de ordenacin es mnimo y colocndolo posteriormente
en su sitio.
A efectos prcticos, no suele dar resultados buenos si se compara con otros mtodos de
ordenacin. Realiza una enorme cantidad de comparaciones, pero en contrapartida,
muy pocos intercambios. Eso hace que su utilizacin se restrinja en general a dos
situaciones: o bien necesitamos un algoritmo sencillito para ordenar unos pocos datos
y cogemos ste mismo que no est mal y es fcil de recordar, o bien tenemos una
situacin en la cual escribir en el array es mucho ms gravoso que leer, como puede ser
un escenario en el que intervengan determinados dispositivos de almacenamiento o
memorias tipo flash, eprom, etc. para el soporte de los datos.
Este algoritmo se basa en hacer comparaciones, as que para que realice su trabajo de
ordenacin son imprescindibles dos cosas: un array o estructura similar de elementos
comparables y un criterio claro de comparacin, tal que dados dos elementos nos diga
si estn en orden o no.
- Burbuja Menor
ANALISIS:
Ordena los elementos de un arreglo unidimensional usando el mtodo de la burbuja
Arreglo: A de N elementos
I, J, AUX: Variables de tipo entero
DISEO:
INICIO
Repetir I desde 2 hasta N
Repetir J desde 2 hasta I
Si A[J-1]>A[J] entonces
Hacer AUX A[J-1], A[J-1] A[J], A[J] AUX
Fin Si
Fin Repetir
Fin Repetir
FIN
- Burbuja Mayor
ESCUELA POLITCNICA NACIONAL
FACULTAD DE INGENIERA DE SISTEMAS
INGENIERA DE SISTEMAS INFORMTICOS Y DE COMPUTACIN
ANALISIS:
Ordena los elementos de un arreglo unidimensional usando el mtodo de la burbuja
Arreglo: A de N elementos
I, J, AUX: Variables de tipo entero
DISEO:
INICIO
Repetir I desde N-1 hasta 1
Repetir J desde 1 hasta I
Si A[J]>A[J+1] entonces
Hacer AUX A[J], A[J] A[J+1], A[J+1] AUX
Fin Si
Fin Repetir
Fin Repetir
FIN
- Burbuja Seal
ANALISIS:
Ordena los elementos de un arreglo usando el mtodo de la burbuja con seal
Arreglo: A de N elementos
I, J, AUX: Variables de tipo entero
BAND: Variable de tipo boolean
DISEO:
INICIO
Hacer I1 y BANDFALSO
Mientras ((I<=N-1) y (BAND=FALSO)) repetir
Hacer BANDVERDADERO
Repetir J desde 1 hasta N-1
Si (A[J]>A[J+1]) entonces
Hacer AUX A[J], A[J] A[J+1], A[J+1] AUX
Y BAND=FALSO
Fin Si
Fin Repetir
Hacer II+1
Fin Mientras
FIN
DISEO:
INICIO
ESCUELA POLITCNICA NACIONAL
FACULTAD DE INGENIERA DE SISTEMAS
INGENIERA DE SISTEMAS INFORMTICOS Y DE COMPUTACIN
- Insercin Directa
ANALISIS:
Ordena los elementos de un arreglo unidimensional usando el mtodo de insercin directa
Arreglo: A de N elementos
I, K, AUX: Variables de tipo entero
DISEO:
INICIO
Repetir I desde 2 hasta 1
Hacer AUXA[I] y KI-1
Mientras ((K=>1)y (AUX<A[K]))Repetir
Hacer A[K+1]A[K] y KK-1
Fin Mientras
Hacer A[K+1]AUX
Fin Repetir
FIN
- Insercin Binaria
ANALISIS:
Ordena los elementos de un arreglo unidimensional usando el mtodo de insercin binaria
Arreglo: A de N elementos
I, M, AUX, IZQ, DER, J: Variables de tipo entero
DISEO:
ESCUELA POLITCNICA NACIONAL
FACULTAD DE INGENIERA DE SISTEMAS
INGENIERA DE SISTEMAS INFORMTICOS Y DE COMPUTACIN
INICIO
Repetir I desde 2 hasta N
Hacer AUXA[I], IZQ1, DERI-1
Mientras (DER<=IZQ)repetir
Hacer M parte entera ((IZQ+DER)/2)
Si(AUX<=A[M]) entonces
Hacer DERM-1
sino
Hacer IZQM+1
Fin Si
Fin Mientras
Hacer JI-1
Mientras (J=>IZQ) Repetir
Hacer A[J+1]A[J] y JJ-1
Fin Mientras
Hacer A[IZQ]AUX
Fin Repetir
FIN
- Seleccin Directa
ANALISIS:
Ordena los elementos de un arreglo unidimensional usando el mtodo de seleccion directa
Arreglo: A de N elementos
I, K, MENOR, J: Variables de tipo entero
DISEO:
INICIO
Repetir I desde 1 hasta N-1
Hacer MENORA[I] y K1
Repetir J desde I+1 hasta N
Si(A[J]<MENOR) entonces
Hacer MENORA[J] y KJ
Fin Si
Fin Mientras
Hacer A[K]A[I] y A[I]MENOR
Fin Repetir
FIN
- Secuencial Desordenada
ANALISIS:
Busca secuencialmente un elemento X en un arreglo unidimensional desordenado
Arreglo: V de N componentes
I: Variable tipo entero
ESCUELA POLITCNICA NACIONAL
FACULTAD DE INGENIERA DE SISTEMAS
INGENIERA DE SISTEMAS INFORMTICOS Y DE COMPUTACIN
DISEO:
INICIO
Hacer I1
Mientras((I<=N) y (V[I]!=X))repetir
Hacer II+1
Fin Mientras
Si(I>N) entonces
Escribir La informacion no esta en el arreglo
sino
Escribir La informacion se encuentra en la posicion,I
Fin Si
FIN
- Secuencial Ordenada
ANALISIS:
Busca secuencialmente un elemento X en un arreglo unidimensional ordenado crecientemente
Arreglo: V de N componentes
I: Variable tipo entero
DISEO:
INICIO
Hacer I1
Mientras((I<=N) y (X>V[I]))repetir
Hacer II+1
Fin Mientras
Si((I>N) o (X<V[I])) entonces
Escribir La informacion no esta en el arreglo
sino
Escribir La informacion se encuentra en la posicion,I
Fin Si
FIN
- Binaria
ANALISIS:
Busca secuencialmente un elemento X en un arreglo unidimensional ordenado
Arreglo: V de N componentes
IZQ, DER, CEN: Variable tipo entero
BAND: Boolean
DISEO:
INICIO
Hacer IZQ1, DERN y BANDFALSO
Mientras((IZQ<=DER) y (BAND=FALSO))repetir
Si(X=V[CEN]) entonces
ESCUELA POLITCNICA NACIONAL
FACULTAD DE INGENIERA DE SISTEMAS
INGENIERA DE SISTEMAS INFORMTICOS Y DE COMPUTACIN
Hacer BANDVERDADERO
Sino
Si(X>V[CEN]) entonces
Hacer IZQCEN+1
Sino
Hacer DERCEN-1
Fin Si
Fin Si
Fin Mientras
Si(BAND=VERDADERO) entonces
Escribir La informacion se encuentra en la posicion,CEN
sino
Escribir La informacion no esta en el arreglo
Fin Si
FIN
IMPLEMENTACION
APLICACIN
package epn.vini;
import javax.swing.JOptionPane;
int aux=Integer.parseInt((JOptionPane.showInputDialog(" 1.
Ordenar\n")));//salida de datos
switch (aux) {
case 1:
int
option=Integer.parseInt((JOptionPane.showInputDialog("Ordenar :\n1
Burbuja menor\n2 Burbuja mayor\n3 Insercion directa\n4 Insercion
binaria\n5 Seleccion directa\n6 Sacudida"
+ "(shaker sort)")));//salida de datos
nuevo.setContenido();
switch (option) {
case 1:
nuevo.bubbleMenor(nuevo.contenido);
break;
case 2:
nuevo.bubbleMayor(nuevo.contenido);
break;
case 3:
nuevo.insercionDirecta(nuevo.contenido);
break;
case 4:
ESCUELA POLITCNICA NACIONAL
FACULTAD DE INGENIERA DE SISTEMAS
INGENIERA DE SISTEMAS INFORMTICOS Y DE COMPUTACIN
nuevo.insercionBinaria(nuevo.contenido);
break;
case 5:
nuevo.seleccionDirecta(nuevo.contenido);
break;
case 6:
nuevo.sacudida(nuevo.contenido);
break;
default:
break;
}
case 2:
int
opcion=Integer.parseInt((JOptionPane.showInputDialog("Busqueda:\n 1.-
Secuencial Desordenado\n2.-Secuencial Ordenado\n3.-Insercion")));
switch (opcion) {
case 1:
int buscadoDes =
Integer.parseInt(JOptionPane.showInputDialog("Numero a Buscar"));
nueva.Secuencial_Desordenado(nuevo.contenido,
buscadoDes);
break;
case 2:
int buscadoOrd =
Integer.parseInt(JOptionPane.showInputDialog("Numero a Buscar"));
nueva.Secuencial_Ordenado(nuevo.contenido,
buscadoOrd);
case 3:
int buscadoBin =
Integer.parseInt(JOptionPane.showInputDialog("Numero a Buscar"));
nueva.Binaria(nuevo.contenido, buscadoBin);
default:
break;
}
default:
break;
}
BUSQUEDA
package epn.vini;
import javax.swing.JOptionPane;
ESCUELA POLITCNICA NACIONAL
FACULTAD DE INGENIERA DE SISTEMAS
INGENIERA DE SISTEMAS INFORMTICOS Y DE COMPUTACIN
izq=0;
der=A.length-1;
cen=(int)(izq+der)/2;
while(izq<=der&&buscado!=A[cen]){
if(buscado>A[cen]){
izq=cen+1;
}
else{
der=cen-1;
cen=(int)(izq+der)/2;
}
}
if(izq>der){
JOptionPane.showMessageDialog(null, "La informacion
no se encuentra en el arreglo");
}
else{
ESCUELA POLITCNICA NACIONAL
FACULTAD DE INGENIERA DE SISTEMAS
INGENIERA DE SISTEMAS INFORMTICOS Y DE COMPUTACIN
METODOS
package epn.vini;
import java.util.Arrays;
import java.util.StringTokenizer;
import javax.swing.JOptionPane;
int [] contenido;
for(int i=0;i<A.length;i++){
for(int j=A.length;j<A.length-1;j++){
if(A[j-1]>A[j]){
temp=A[j-1];
A[j-1]=A[j];
A[j]=temp;
}
}
salida+="Pasada"+(i)+": "+Arrays.toString(A)+"\n";
}
JOptionPane.showMessageDialog(null,salida);
return A;
}
ESCUELA POLITCNICA NACIONAL
FACULTAD DE INGENIERA DE SISTEMAS
INGENIERA DE SISTEMAS INFORMTICOS Y DE COMPUTACIN
String salida="Ordenar
Insercion:\n"+Arrays.toString(A)+"\n";
for(i=2;i<A.length;i++){
k=i;
temp=A[i];
while((k>0)&&(temp<A[k-1])){
A[k] = A[k-1];
k=k-1;
}
A[k]=temp;
salida+="Pasada" +(i)+":
"+Arrays.toString(A)+"\n";
}
JOptionPane.showMessageDialog(null, salida);
return A;
}
izq = 0;
der=i-1;
while (izq<=der){
m=(int)(izq+der)/2;
if (aux<=A[m]){
der=m-1;
}
else
{
izq=m+1;
}
}
j=i-1;
while (j>=izq){
A[j+1]=A[j];
j=j-1;
}
A[izq]=aux;
salida+="Pasada" +(i+1)+": "+Arrays.toString(A)+"\n";
}
JOptionPane.showMessageDialog(null, salida);
return A;
}
for(int i=1;i<A.length-2;i++){
menor=i;
for(int j=i;i<A.length-1;j++){
if(A[j]<A[menor]){
menor=j;
}
}
temp=A[i];
A[i]=A[menor];
A[menor]=temp;
}
return A;
}
}