metodos de ordenamiento

Post on 18-Jun-2015

9.987 Views

Category:

Travel

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Métodos de ordenación

Diego Armando Gómez Mosquera

dagmosqu@usb.edu.co

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

top related