La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

ORDENAMIENTO DE DATOS Jorge Méndez Sánchez Eliúh Cuecuecha Hernández

Presentaciones similares


Presentación del tema: "ORDENAMIENTO DE DATOS Jorge Méndez Sánchez Eliúh Cuecuecha Hernández"— Transcripción de la presentación:

1 ORDENAMIENTO DE DATOS Jorge Méndez Sánchez Eliúh Cuecuecha Hernández
Mauricio Quintero Espinoza

2 Ordenamiento El ordenar un grupo de datos significa mover los datos o sus referencias para que queden en una secuencia tal que represente un orden, el cual puede ser numérico, alfabético o incluso alfanumérico, ascendente o descendente. El ordenamiento se efectúa con base en el valor de algún campo en un registro.

3 Ordenamiento El propósito principal de un ordenamiento es el de facilitar las búsquedas de los miembros del conjunto ordenado. Recomendable cuando se requiere hacer una cantidad considerable de búsquedas y es importante el factor tiempo.

4 Ordenamiento eficiente
Contar el # de comparaciones (C) Contar el # de movimientos de items (M) Estos están en función de el #(n) de items a ser ordenados.

5 Tipos de ordenamiento Los internos:
Los valores a ordenar están en memoria principal, por lo que se asume que el tiempo que se requiere para acceder cualquier elemento sea el mismo (a[1], a[500], etc). Los externos: Son aquellos en los que los valores a ordenar están en memoria secundaria (disco, cinta, cilindro magnético, etc), por lo que se asume que el tiempo que se requiere para acceder a cualquier elemento depende de la última posición accesada (posición 1, posición 500, etc).

6 Algoritmos de ordenamiento
Algoritmos de inserción: Este método toma cada elemento del arreglo para ser ordenado y lo compara con los que se encuentran en posiciones anteriores a la de él dentro del arreglo. Si resulta que el elemento con el que se está comparando es mayor que el elemento a ordenar, se recorre hacia la siguiente posición superior. Si por el contrario, resulta que el elemento con el que se está comparando es menor que el elemento a ordenar, se detiene el proceso de comparación pues se encontró que el elemento ya está ordenado.

7 Algoritmos de ordenamiento
Algoritmos de inserción: Entre estos algoritmos se encuentran el de: INSERCION DIRECTA SHELL SORT INSERCION BINARIA.

8 ORDENACION POR INSERCION DIRECTA
Algoritmo 1.- Partimos de un arreglo aleatoriamente ordenado, y marcamos su primer elemento como parte ordenada, el resto como desordenada.

9 2.- Tomamos el primer numero de la parte no ordenada, y se almacena en una variable temporal.

10 3.- Comparamos empezando por el final de la parte ordenada, hasta que se encuentra un elemento menor.

11 4.- Se desplaza una posición a la derecha los elementos que han resultado mayores que el que queremos insertar y se coloca el valor de la variable temporal en el lugar encontrado.

12 Supóngase que se desea ordenar los siguientes claves del arreglo A utilizando el método de inserción directa el cual consiste en insertar un elemento del arreglo en la parte izquierda del mismo que ya se encuentra ordenada. Este proceso se repite desde el segundo hasta el n-esimo elemento. Ejemplo 1: A= 15, 67, 08, 16, 44, 27, 12, 35 Comparaciones realizadas: 1ª pasada A[2] < A[1] 67 < 15 No hay intercambio A= 15, 67, 08, 16, 44, 27, 12, 35 2ª pasada A[3] < A[2] 08 < 67 Si hay intercambio A= 15, 08, 67, 16, 44, 27, 12, 35 3ª pasada A[4] < A[3] 08 < 15 Si hay intercambio A= 08, 15, 67, 16, 44, 27, 12, 35 Y así sucesivamente...

13 Inserción binaria

14 Para hablar de este método de ordenación es necesario que esta basado en la búsqueda binaria o dicotómica. Diatómico = algo que se divide en dos.

15 Algoritmo 1.- Hallamos el elemento central del área comprendida por la parte ordenada más la posición del elemento a insertar

16 2.- Comparamos el elemento central con el elemento central es menor o igual, nos quedamos con la parte derecha (sin incluir el elemento central) en caso contrario nos quedamos con la parte izquierda incluyendo el elemento central.

17 3.- Repetimos el mismo proceso sobre el área con la que nos quedamos, hasta que dicha área sea nula.

18 4.- Cuando el área sea nula, tendremos la posición de inserción.

19 código

20 Metodo de shell sort

21 Es una mejora del método de inserción directa que se utiliza cuando el número de elementos a ordenar es grande. El método se denomina “shell” –en honor de su inventor Donald shell – y también método de inserción con incrementos decrecientes. En el método de clasificación por inserción, cada elemento se compara con los elementos contiguos de su izquierda, uno tras otro.

22 Shell propone que las comparaciones entre elementos se efecto en con saltos de mayor tamaño pero con incrementos decrecientes, así, los elementos quedarán ordenados en el arreglo más rápidamente.

23 E l algoritmo Shell Sort mejora el ordenamiento por inserción comparando elementos separados por un espacio de varias posiciones. Esto permite que un elemento haga "pasos más grandes" hacia su posición esperada. Los pasos múltiples sobre los datos se hacen con tamaños de espacio cada vez más pequeños. El último paso del Shell Sort es un simple ordenamiento por inserción, pero para entonces, ya está garantizado que los datos del vector están casi ordenados.

24 Para ordenar una secuencia de elementos se procede así: se selecciona una distancia inicial y se ordenan todos los elementos de acuerdo a esa distancia, es decir, cada elemento separado de otro a distancia estará ordenado con respecto a él. Se disminuye esa distancia progresivamente, hasta que se tenga distancia 1 y todos los elementos estén ordenados.

25

26 http://www.youtube.com/watch?v=zUrepw3Dtjs& feature=related

27 Algoritmos de ordenamiento
Algoritmos de intercambio: En este tipo de algoritmos se toman los elementos de dos en dos, se comparan y se INTERCAMBIAN si no están en el orden adecuado. Este proceso se repite hasta que se ha analizado todo el conjunto de elementos y ya no hay intercambios. Entre estos algoritmos se encuentran el: BURBUJA QUICK SORT.

28 Método burbuja Se recorre el arreglo intercambiando los elementos adyacentes que estén desordenados. Se recorre el arreglo tantas veces hasta que ya no haya cambios. Prácticamente lo que hace es tomar el elemento mayor y lo va recorriendo de posición en posición hasta ponerlo en su lugar.

29 Método burbuja

30 Quick short El algoritmo trabaja de la siguiente forma: 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. Los elementos iguales al pivote pueden ser colocados tanto a su derecha como a su izquierda, dependiendo de la implementación deseada. En este momento, el pivote ocupa exactamente el lugar que le corresponderá en la lista ordenada. 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.

31 Quick short Ejemplo: A: 15,67,08,16,44,27,12,35 Se selecciona A[i] x=15 Primera pasada (DER-IZQ) A[8] >= x 35 >= 15 No hay intercambio A[7] >= x 12 >= 15 Si hay intercambio A: 12,67,08,16,44,27,15,35 (IZQ-DER) A[2] < = X 67 < = 15 Si hay intercambio A:12,15,08,16,44,27,67,35 2da. Pasada (DER-IZQ) A[6] >= x 27 >= 15 No hay intercambio A[5] >= x 44 >= 15 No hay intercambio A[4] >= x 16 >= 15 No hay intercambio A[3] >= x 08 >= 15 Si hay intercambio A: 12,08,15,16,44,27,67,35

32 Quick short X=16 (DER-IZQ) A[8]>=x No hay intercambio A[7]>=x No hay intercambio A[6]>=x No hay intercambio A[5]>=x No hay intercambio A: 12, 08, 15, 16, 44, 27, 67, 35 x=44 (DER-IZQ) A[8]>= x Si hay intercambio A: 12, 08, 15, 16, 35, 27, 67, 44 (IZQ-DER) A[6] < = x No hay intercambio A[7] < = x Si hay intercambio 12, 08, 15, 16, 35, 27, 44, 67

33 Quick short X=35 (DER-IZQ) A[8] >= x No hay intercambio
A[6] >= x Si hay intercambio 12, 08, 15, 16, 35, 27, 44, 67 12, 08, 15, 16, 27, 35, 44, 67 12,08 x=12 (DER-IZQ) A[2]>=x Si hay intercambio EL VECTOR ORDENADO: 08,12,15,16,27,35,44,67

34 Quick short void ordena( int vect[], int izq, int der ){              int i = 0, j = 0;              int x = 0, aux = 0;              i = izq;              j = der;              x = vect [ (izq + der) /2 ];              do{                  while( (vect[i] < x) && (j <= der) ){                         i++;}                  while( (x < vect[j]) && (j > izq) ){                         j--;}                  if( i <= j ){                      aux = vect[i];                      vect[i] = vect[j];                      vect[j] = aux;                      i++;  j--;                  }              }while( i <= j );              if( izq < j )                  ordena( vect, izq, j );              if( i < der )                  ordena( vect, i, der );          }

35 Algoritmos de ordenamiento
Algoritmos de selección: En este tipo de algoritmos se SELECCIONA o se busca el elemento más pequeño (o más grande) de todo el conjunto de elementos y se coloca en su posición adecuada. Este proceso se repite para el resto de los elementos hasta que todos son analizados. Entre estos algoritmos se encuentra el de SELECCION DIRECTA.

36 Selección directa 1ª pasada: buscamos entre los últimos n (es decir, 5) elementos el menor de todos, y lo intercambiaremos con la primera posición. 45, 52, 21, 37, 49 → Para buscar el menor, necesitaremos un bucle for que recorra los n últimos elementos. 45, 52, 21, 37, 49 → El menor es el 21, colocado en tercera posición. 45, 52, 21, 37, 49 → Lo intercambiamos con el de la primera posición. 21, 52, 45, 37, 49 → Ya tenemos uno en orden. Nos quedan los n-1 últimos.

37 Selección directa 2ª pasada: buscamos entre los últimos n-1 (es decir, 4) elementos el menor de todos, y lo intercambiaremos con la segunda posición. 21, 52, 45, 37, 49 → Recorremos los cuatro últimos y el menor es el , 37, 45, 52, 49 → Lo intercambiamos con la segunda posición y ya hay dos en orden. 3ª pasada: buscamos entre los últimos n-2 (es decir, 3) elementos el menor de todos, y lo intercambiaremos con la tercera posición. 21, 37, 45, 52, 49 → El menor es el 45, en tercera posición. 21, 37, 45, 52, 49 → El 45 ya estaba en 3ª posición, así que al intercambiarlo con él mismo, se queda donde está. Ya tenemos tres en orden.

38 Selección directa 4ª y última pasada: buscamos entre los últimos n- 3 (es decir, 2) elementos el menor de todos, y lo intercambiaremos con la cuarta posición. 21, 37, 45, 52, 49 → El menor es el 49, en quinta posición. 21, 37, 45, 49, 52 → Lo intercambiamos con la cuarta posición. Ya hay cuatro en orden. 21, 37, 45, 49, 52 → El último está necesariamente en orden también.

39 Selección directa para i=1 hasta n-1 minimo = i; para j=i+1 hasta n si lista[j] < lista[minimo] entonces minimo = j /* (!) */ fin si fin para intercambiar(lista[i], lista[minimo])

40 Algoritmos de ordenamiento
Algoritmos de enumeración: En este tipo de algoritmos cada elemento es comparado contra los demás. En la comparación se cuenta cuántos elementos son más pequeños que el elemento que se está analizando, generando así una ENUMERACION. El número generado para cada elemento indicará su posición. Ejemplo : Hashing

41 hashing

42 Hash: se refiere a una función o método para generar claves o llaves que representen de manera casi unívoca a un documento, registro, archivo, etc., resumir o identificar un dato a través de la probabilidad, utilizando una función hash o algoritmo hash.

43 Consiste en asignar a cada elemento un índice mediante una transformación del elemento. Esta correspondencia se realiza mediante una función de conversión, llamada función hash. Correspondencia más sencilla es la identidad, esto es, al número 0 se le asigna el índice 0, al elemento 1 el índice 1, y así sucesivamente. Pero si los números a almacenar son demasiado grandes esta función es inservible.

44 Por ejemplo, se quiere guardar en un array la información de los 1000 usuarios de una empresa, y se elige el número de DNI como elemento identificativo. Es inviable hacer un array de elementos, sobre todo porque se desaprovecha demasiado espacio. Por eso, se realiza una transformación al número de DNI para que nos de un número menor, por ejemplo coger las 3 últimas cifras para guardar a los empleados en un array de 1000 elementos. Para buscar a uno de ellos, bastaría con realizar la transformación a su DNI y ver si está o no en el array.

45 1.- Restas sucesivas: Esta función se emplea con claves numéricas entre las que existen huecos de tamaño conocido, obteniéndose direcciones consecutivas. Un ejemplo serian los alumnos de ingeniería en sistemas que entraron en el año 2005 sus números de control son consecutivos y esta definido el numero de alumnos. »» 0 »» 1 »» 2 »» 99

46 2.- Aritmética modular: El índice de un número es resto de la división de ese número entre un número N prefijado, preferentemente primo. Los números se guardarán en las direcciones de memoria de 0 a N-1. Este método tiene el problema de que dos o más elementos pueden producir el mismo residuo y un índice puede ser señalado por varios elementos. A este fenómeno se le llama colisión. Si el número N es el 7, los números siguientes quedan transformados en: 1679 »> »> »> »> »> 0 Mientras mas grande sea número de elementos es mejor escoger un número primo mayor para seccionar el arreglo en más partes. El número elegido da el número de partes en que se secciona el arreglo, y las cada sección esta compuesta por todos los elementos que arrojen el mismo residuo, y mientras mas pequeñas sean las secciones la búsqueda se agilizara mas que es lo que nos interesa.

47 3.- Mitad del cuadrado: Consiste en elevar al cuadrado la clave y coger las cifras centrales. Este método también presenta problemas de colisión. 709^2= –> 26 456^2= –> 79 105^2=11025 –> 10 879^2= –> 26 619^2= –> 31 Nota: en caso de que la cifra resultante sea impar se toma el valor número y el anterior.

48 5.- Truncamiento: Consiste en ignorar parte del número y utilizar los elementos restantes como índice. También se produce colisión. Por ejemplo, si un número de 7 cifras se debe ordenar en un arreglo de elementos, se pueden tomar el segundo, el cuarto y el sexto para formar un nuevo número: »> 703 »> 481 »> 064 »> 142 »> 142

49 5.- Plegamiento: Consiste en dividir el número en diferentes partes, y operar con ellas (normalmente con suma o multiplicación). También se produce colisión. Por ejemplo, si dividimos el número de 7cifras en 2, 2 y 3 cifras y se suman, dará otro número de tres cifras (y si no, se toman las tres últimas cifras): »> = 988 »> = 742 »> = 297 »> = 845 »> = 1054 Nota: Estas solo son sugerencias y que con cada problema se pude implementar una nueva función hash que incluso tu puedes inventar o formular.


Descargar ppt "ORDENAMIENTO DE DATOS Jorge Méndez Sánchez Eliúh Cuecuecha Hernández"

Presentaciones similares


Anuncios Google