La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Ordenamiento en lenguaje c

Presentaciones similares


Presentación del tema: "Ordenamiento en lenguaje c"— Transcripción de la presentación:

1 Ordenamiento en lenguaje c
Benemérita Universidad Autónoma de Puebla Ordenamiento en lenguaje c Martin Raymundo Herrera Medina José Alfredo Vázquez Rosiles Jordany Salazar Aparicio Programación Facultad de ciencias de la electrónica

2 Algoritmos de ordenación
Su finalidad es organizar ciertos datos en un orden creciente o decreciente mediante una regla prefijada. Atendiendo al tipo de elemento que se quiera ordenar puede ser: Ordenación interna: Los datos se encuentran en memoria (ya sean arreglos, listas, etc.), y son de acceso aleatorio o directo. Los métodos de ordenación interna se aplican principalmente a arreglos unidimensionales. Ordenación externa: Los datos están en un dispositivo de almacenamiento externo y su ordenación es más lenta que la interna.

3 Algoritmos de ordenación interna
selección burbuja Inserción directa shell megasort quicksort

4 selección Este método consiste en buscar el elemento más pequeño del arreglo y ponerlo en primera posición, para esto se compara un elemento con los demás intercambiando posiciones de acuerdo a un criterio. Luego, entre los restantes, se busca el elemento más pequeño y se coloca en segundo lugar, y así sucesivamente hasta colocar el último elemento. Ejemplo: x[0]>x[1] ? Cierto. El 5 pasa a la posición x[1]. Y el 4 pasa a la posición x[0]. 5 4 3 2 X [4] : 1 2 3 4 5 3 2 1 2 3

5 x[0]>x[2] Cierto. El 4 pasa a la posición x[2] y el 3 a la posición x[0].
x[1] >x[3]. Cierto. El 4 pasa a la posición x[3] y el 3 a x[1]. 2 3 5 4 3 5 4 2 x[0]>x[2] Cierto. El 3 pasa a la posición x[3] y el 2 a la posición x[0]. x[2] >x[3]. Cierto. El 5 pasa a la posición x[3] y el 4 a x[2]. 2 3 4 5 2 5 4 3 Pseudocódigo : Para i=0; i<(tam. del arreglo)-1; i incrementa para j=1; j<tam del arreglo; j incrementa si x[i]>x[j] temporal=x[i]; x[i]=x[j]; x[j]=temporal; fin si; fin para; Ya hemos conseguido acomodar al elemento mas pequeño en su lugar x[1] >x[2]. Cierto. El 5 pasa a la posición x[2] y el 4 a x[1]. 2 4 5 3

6 Burbuja Consiste en comparar pares de elementos adyacentes e intercambiarlos entre sí hasta que estén todos ordenados. Ejemplo: 4 5 3 2 5 4 3 2 X [4] : x[1]>x[2] cierto. El 5 se cambia a x[2] y el 3 a x[1]. 1 2 3 4 3 5 2 Comparamos pares de elementos: x[0]>x[1] cierto. El 5 se cambia a x[1] y el 4 a x[0]. x[2]>x[3] cierto. El 5 se cambia a x[3] y el 2 a x[2]. 4 3 2 5

7 Se repite el ciclo hasta tener todos los números en orden.
Pseudocódigo n=0; mientras n<tam del arreglo -1 para i=0; i< tam del arreglo-1; i incrementa si x [i] > x [i-1] temporal = x [i]; x [i] = x [i-1]; x [i-1] = temporal; fin si; fin para; n=n+1; fin mientras; x[0]>x[1] cierto. El 4 se cambia a x[1] y el 3 a x[0]. 3 4 2 5 x[1]>x[2] cierto. El 4 se cambia a x[2] y el 2 a x[1]. 3 2 4 5 x[0]>x[1] cierto. El 4 se cambia a x[1] y el 2 a x[0]. 2 3 4 5

8 Inserción directa Este método consiste en buscar el elemento más pequeño del arreglo y ponerlo en primera posición; luego, entre los restantes, se busca el elemento más pequeño y se coloca en segundo lugar, y así sucesivamente hasta colocar el último elemento.

9 para i = 1; i < tam del arreglo; i++ temp= x [i];
Pseudocódigo para i = 1; i < tam del arreglo; i++ temp= x [i]; para j = i – 1; j >= 0 && x [ j ] > temp; j - - x [ j +1] = x [ j ]; x [ j ] = temp; fin para;

10 5 3 2 temp= 3 X[0]>temp .Cierto se intercambian posiciones 3 5 2 temp= 2 X[1]>temp .Cierto se intercambian posiciones 3 2 5 temp= 2 X[0]>temp .Cierto se intercambian posiciones 2 3 5

11 ORDENAMIENTO SHELL SORT
Esta forma de ordenación es muy parecida a la ordenación con burbuja. La diferencia es que usando el método de burbuja se realiza una comparación lineal, y shellsort trabaja con una segmentación entre los datos, acomodándolos en un arreglo unidimensional y subsecuentemente ordenando las columnas. Por lo tanto es un buen método, pero no el mejor para implementarlo en grandes arreglos.  Este proceso se repite cada vez con un arreglo menor, es decir, con menos columnas, en la ultima repetición solo tiene una columna, cada que se realiza el proceso se ordena mas los datos, hasta que en su ultima repetición están completamente ordenados. Sin embargo el numero de operaciones para ordenar en cada repetición esta limitado debido al pre-ordenamiento que se obtuvo en las repeticiones anteriores.

12 Ejemplo: Algoritmo  ______________________________________… void ShellSort(Lista)//Lista es un vector que contiene los elementos a ser ordenados.  1. Declarar variables enteras: i, j, incremento = 3, temp  2. Repetir mientras incremento > 0:  3. Repetir mientras i sea menor al tamaño de la Lista  4. j = i, temp = Lista[i]  5. Repetir mientras j >= incremento y Lista[j - incremento] > temp  6. Lista[j] = Lista[j - incremento], j = j - incremento 7. [fin de ciclo del paso 5] 8. Lista[j] = temp 9. [fin de ciclo del paso 3]  10. si incremento/2 != 0 entonces: 11. incremento = incremento/2 12. si incremento == 1 entonces: 13. incremento = si no, entonces: 15. incremento = [fin de ciclo del paso 2] 17. Salir

13 ORDENACION EXTERNA Es un término genérico para los algoritmos de ordenamiento que pueden manejar grandes cantidades de información. El ordenamiento externo se requiere cuando la información que se tiene que ordenar no cabe en la memoria principal de una computadora (típicamente la RAM) y un tipo de memoria más lenta (típicamente un disco duro) tiene que utilizarse en el proceso. Existen otros tipos de memoria externa que son los usb, de almacenamiento entre otros.

14 ORDENACION La Ordenación externa de los datos están en un dispositivo de almacenamiento externo (Archivos) y su ordenación es más lenta que la interna. Aquí primero se crea un archivo en notepad o en cualquier editor de texto, después se busca el archivo que ene este caso es “países” en el disco duro con extensión TXT y los muestra en la tabla y lo abrimos como se muestra en el algoritmo.

15 ORDENACION Aquí se muestra como se puede editar un texto txt, abriéndolo y ordenándolo como se muestra en la figura y algoritmo siguiente.

16 MERGE Sort (Ordenamiento POR FUSION)
Combinación de dos estructuras de datos ordenadas para crear una estructura ordenada de mayor tamaño. Arreglos enteros ordenados: a[1],…, a[M] b[1],…, b[N] Fusionarlos en: c[1],…, c[M+N]

17 Si la longitud de la lista es 0 ó 1, entonces ya está ordenada
Si la longitud de la lista es 0 ó 1, entonces ya está ordenada. En otro caso: Dividir la lista desordenada en dos sublistas de aproximadamente la mitad del tamaño. Ordenar cada sublista recursivamente aplicando el ordenamiento por mezcla. Mezclar las dos sublistas en una sola lista ordenada.

18

19 Quick Sort (Ordenamiento Rápido)
Es el algoritmo de ordenamiento más eficiente de todos, se basa en la técnica de "Divide y Vencerás", que permite en promedio, ordenar n elementos en un tiempo proporcional a n*log(n).

20 Algoritmo Fundamental:
Elegir un elemento de la lista de elementos a ordenar, al que llamaremos pivote. Resituar los demás elementos de la lista a cada lado del pivote, de manera que a un lado queden todos los menores que él, y al otro los mayores.

21 La lista queda separada en dos sublistas, una formada por los elementos a la izquierda del pivote, y otra por los elementos a su derecha. Repetir este proceso de forma recursiva para cada sublista mientras éstas contengan más de un elemento. Una vez terminado este proceso todos los elementos estarán ordenados.

22 Implementación

23


Descargar ppt "Ordenamiento en lenguaje c"

Presentaciones similares


Anuncios Google