18
Ordenamiento de arreglos Estructuras de Datos

Ordenamiento ppt

Embed Size (px)

Citation preview

Page 1: Ordenamiento ppt

Ordenamiento de arreglos

Estructuras de Datos

Page 2: Ordenamiento ppt

Algoritmos de ordenamiento

Dado un arreglo de enteros A y su longitud TAM, ordenar el arreglo de menor a mayor

Métodos de ordenamiento: Selección Inserción Burbuja Quicksort

Page 3: Ordenamiento ppt

Método de Selección

Este algoritmo es sencillo. Consiste en lo siguiente:

Buscas el elemento más pequeño de la lista. Lo intercambias con el elemento ubicado en

la primera posición de la lista. Buscas el segundo elemento más pequeño

de la lista. Lo intercambias con el elemento que ocupa

la segunda posición en la lista. Repites este proceso hasta que hayas

ordenado toda la lista.

Page 4: Ordenamiento ppt

Ejemplo de selección

Lista a ordenar: 4 - 3 - 5 - 2 - 1

intercambiamos con el 4 y la lista queda así:

1 - 3 - 5 - 2 - 4

Lo intercambiamos con el elemento en la segunda posición, es decir el 3. La lista queda así:

1 - 2 - 5 - 3 - 4

intercambiamos con el 5:

1 - 2 - 3 - 5 - 4

intercambiamos con el 5:

1 - 2 - 3 - 4 - 5

Page 5: Ordenamiento ppt

Algoritmo (método de selección)

for (i=0; i<TAM - 1; i++)

pos_menor = Menor (A, TAM, i);

temp = A[i];

A[i] = A [pos_menor];

A [pos_menor] = temp;

Page 6: Ordenamiento ppt

Método de inserción

Consideremos que en un momento dado, el segmento izquierdo del arreglo está ordenado y el segmento derecho no.

Podemos tomar un elemento del segmento derecho e insertarlo en su lugar correcto en el lado izquierdo

Parte ordenada Parte desordenada

Page 7: Ordenamiento ppt

Se considera la lista partida en dos sublistas, una ordenada y la otra para ordenar

En el primer paso, la lista ordenada contiene un elemento y la lista por ordenar, TAM-1,

Se van extrayendo uno a uno los elementos de la lista desordenada y se colocan en la sublista ordenada, mediante comparaciones sucesivas, hasta encontrar la posición correcta,

El proceso continúa hasta que la lista desordenada queda vacía.

Page 8: Ordenamiento ppt

Ejemplo de inserción

8 12 4 9 3

8 12 4 9 3

4 8 12 9 3

4 8 9 12 3

3 4 8 9 12

Page 9: Ordenamiento ppt

Método de la burbuja

Supongamos que tenemos una función flota() que “flota” el elemento más grande hasta el final del arreglo.

Ejemplo: int a[] = {8, 12, 4, 9, 3 };

flota(a);

a 8 4 9 3 12

Page 10: Ordenamiento ppt

Método de la burbuja

¿Cómo podemos ordenar todo el arreglo usando la función flota?

8 12 4 9 3

8 4 9 3 12

8 4 3 9 12

4 3 8 9 12

3 4 8 9 12

Page 11: Ordenamiento ppt

Método de la burbuja

for(i=N-1; i>0; i--)

flota(a);

Podemos ahorrar ciclos si limitamos el límite de flotación

for(i=N-1; i>0; i--)

flota(a, i);

Page 12: Ordenamiento ppt

El método flota

/* dado un arreglo y un índice i, colocar en la posición i el elemento más grande que exista entre a[0] y a[i]

flota: arreglo, indice->void*/void flota(int a[], int i){ ...}

Page 13: Ordenamiento ppt

Flotación

8 12 4 9 3

8 12 4 9 3

8 4 12 9 3

8 4 9 12 3

8 4 9 3 12

Page 14: Ordenamiento ppt

Flotación

Public void flota(int a[], int i)

{int j;

for(j=0; j < i; j++)

if(a[j]>a[j+1])

intercambia(a[j], a[j+1]);

}

Page 15: Ordenamiento ppt

Intercambio

Public void intercambia(int x, int y)

{int t;

t = x;

x = y;

y = t;

}

Page 16: Ordenamiento ppt

Método de la burbuja

void burbuja(int a[], int N){ int i; for(i=N-1; i>0; i--)

flota(a, i);} void flota(int a[], int i)Public void burbuja(int a[], int N){ int i, j; for(i=N-1; i>0; i--)

for(j=0; j < i; j++) if(a[j]>a[j+1]) intercambia(a[j], a[j+1]);

}

Page 17: Ordenamiento ppt

Quick Sort

Inventado por C. A. R. Hoare Se escoje un elemento del arreglo como

pivote Se particiona el arreglo en dos subarreglos:

uno contiene aquellos elementos menores que el pivote, el otro contiene los mayores

Se ordenan los subarreglos. Se obtiene el arreglo ordenado uniendo de

nuevo los subconjuntos ordenados y el pivote.

Page 18: Ordenamiento ppt

Comparación de algoritmos Número

de elementos

Selección con listas

Selección con

arreglos

Burbuja con

arreglos

Quicksort con colas

Quicksort con

arreglos

100 103 miliseg. 4 miliseg. 6 miliseg. 29 miliseg. 2 miliseg.

500 3638 miliseg.

86 miliseg. 165 miliseg. 217 miliseg.

9 miliseg.

1000 20 seg. 0.3 seg. 0.7 seg. 0.6 seg. 18 miliseg.

2000 121 seg. 1.4 seg. 2.6 seg. 1.5 seg. 43 miliseg.

100000 más de 3 días

1 hora 2 horas 15 min. 3.4 seg.