metodos de ordenamiento
TRANSCRIPT
Métodos de ordenación.
Ordenación por intercambio. Ordenación por selección. Ordenación por inserción. Ordenación por burbuja.
Ordenación por intercambio
Algoritmo de ordenación mas sencillo. Ordena los elementos de una lista de forma
ascendente. El algoritmo se basa en la lectura sucesiva de la
lista a ordenar, comparando el elemento inferior de la lista con el resto de elementos.
El algoritmo realiza n-1 pasadas.
Algoritmo
public static void ordenacionPorIntercambio(int a[]){for (int i = 0; i <a.length-1; i++) {
for (int j = i+1; j <a.length; j++) {if(a[i]>a[j]){
int aux;aux=a[i];a[i]=a[j];a[j]=aux;
}}
}}
Ordenación por selección
El algoritmo se fundamenta en sucesivas pasadas que intercambian el elemento mas pequeño de la lista a la primera posición de la lista y así sucesivamente.
Su implementación es con dos ciclos anidados.
Es uno de los métodos mas eficientes.
Ordenación por selección
4 3 2 1
a[0] a[1] a[2] a[3]
1 3 2 4
a[0] a[1] a[2] a[3]
1 2 3 4
a[0] a[1] a[2] a[3]
Ordenación por selección
public static void ordenacionPorSeleccion(int a[]){ int i,j,posMenor=0; boolean cambio=false;
for (i = 0; i <a.length-1; i++) {int tmp=a[i];for (j = i+1; j < a.length; j++) {
if(tmp>a[j]){tmp=a[j];posMenor=j;cambio=true;
}}if(cambio==true){
int aux=a[i];a[i]=a[posMenor];a[posMenor]=aux;cambio=false;
}}
}
Ordenación por inserción.
El algoritmo se fundamenta en la inserción de números en la posición mas adecuada de la lista hasta que estos quedan ordenados.
Corre los números de izquierda a derecha.
Ordenación por inserción.
4 3 2 1
a[0] a[1] a[2] a[3]
3 4 2 1
a[0] a[1] a[2] a[3]
2 3 4 1
a[0] a[1] a[2] a[3]
1 2 3 4
a[0] a[1] a[2] a[3]
Ordenación por inserción.
public static void ordenacionPorInsercion(int a[]){int i,j;int aux;for (i = 1; i < a.length; i++) {
j=i;aux=a[i];while(j>0 && aux<a[j-1]){
a[j]=a[j-1];j--;
}a[j]=aux;
}}
Búsqueda en listas.
Búsqueda secuencial. Búsqueda binaria.
Búsqueda secuencial.
El elemento que se busca en la lista se conoce como clave.
La clave se busca elemento por elemento de la lista hasta su primer ocurrencia.
Si se encuentra la clave se retorna la posición donde se encontró, de lo contrario retorna -1.
Búsqueda secuencial.
4 8 3 14 21 90 2 1 65 89 90 2
Búsqueda binaria.
La lista debe ser ordenada. Es una búsqueda mucho mas rápida. El algoritmo parte la lista a la mita. Busca hacia la derecha o izquierda según
le convenga y parte la lista de nuevo hasta encontrar el valor de busqueda.
Búsqueda binaria.
-8 4 5 9 12 18 25 40
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7]
60
a[8] Bajo=0
Alto=8
Central = (bajo+alto)/2= (0+8)/2=4
18 25 40
a[5] a[6] a[7]
60
a[8]
Central = (bajo+alto)/2= (5+8)/2=6
40
a[7]
60
a[8]
Central = (bajo+alto)/2= (7+8)/2=7