Sei sulla pagina 1di 17

Qu es ordenamiento? Es la operacin de arreglar los registros de una tabla en algn orden secuencial de acuerdo a un criterio de ordenamiento.

El ordenamiento se efecta con base en el valor de algn campo en un registro. El propsito principal de un ordenamiento es el de facilitar las bsquedas de los miembros del conjunto ordenado. Ej. de ordenamientos: Dir. telefnico, tablas de contenido, bibliotecas y diccionarios, etc. 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 numrico, alfabtico o incluso alfanumrico, ascendente o descendente. Cundo conviene usar un mtodo de ordenamiento? Cuando se requiere hacer una cantidad considerable de bsquedas y es importante el factor tiempo. Tipos de ordenamientos: Los 2 tipos de ordenamientos que se pueden realizar son: los internos y los externos. Los internos: Son aquellos en los que los valores a ordenar estn 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 estn en memoria secundaria (disco, cinta, cilindro magntico, etc), por lo que se asume que el tiempo que

se requiere para acceder a cualquier elemento depende de la ltima posicin accesada (posicin 1, posicin 500, etc). Algoritmos de ordenamiento: Internos:

Insercin directa. Insercin binaria. Insercin directa. Seleccin directa. Seleccin directa. Burbuja. Shake. Intercambio directo. Shell. Insercin disminucin incremental. Heap. Tournament. Ordenamiento de rbol. Quick sort. Sort particionado. Merge sort. Radix sort.

Clculo de direccin. Externos: Straight merging. Natural merging. Balanced multiway merging. Polyphase sort. Distribution of initial runs. Clasificacin de los algoritmos de ordenamiento de informacin: El hecho de que la informacin est ordenada, nos sirve para poder encontrarla y accesarla de manera ms eficiente ya que de lo contrario se tendra que hacer de manera secuencial. A continuacin se describirn 4 grupos de algoritmos para ordenar informacin: Algoritmos de insercin: En este tipo de algoritmo los elementos que van a ser ordenados son considerados uno a la vez. Cada elemento es INSERTADO en la posicin apropiada con respecto al resto de los elementos ya ordenados. Entre estos algoritmos se encuentran el de INSERCION DIRECTA, SHELL SORT, INSERCION BINARIA y HASHING. Algoritmos de intercambio: En este tipo de algoritmos se toman los elementos de dos en dos, se comparan y se INTERCAMBIAN si no estn 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 y QUICK SORT

Algoritmos de seleccin: En este tipo de algoritmos se SELECCIONA o se busca el elemento ms pequeo (o ms grande) de todo el conjunto de elementos y se coloca en su posicin 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. Algoritmos de enumeracin: En este tipo de algoritmos cada elemento es comparado contra los dems. En la comparacin se cuenta cuntos elementos son ms pequeos que el elemento que se est analizando, generando as una ENUMERACION. El nmero generado para cada elemento indicar su posicin. Los mtodos simples son: Insercin (o por insercin directa), seleccin, burbuja y shell, en dnde el ltimo es una extensin al mtodo de insercin, siendo ms rpido. Los mtodos ms complejos son el quick-sort (ordenacin rpida) y el heap sort.

Mtodos de Ordenacin Un mtodo de ordenamiento consiste en un algoritmo que recibe como entrada a un conjunto de datos que son necesarios de ordenar segn cierto(s) criterio(s). El objetivo fundamental de stos mtodos es el de facilitar la bsqueda de datos segn estos mismos criterios. Muchas veces es necesario adems de buscar elementos dentro de en un vector, ordenarlos. Este ordenamiento puede ser de mayor a menor si estamos manejando nmeros y en orden alfabtico si se trata de nombres o caracteres. Existe una gran variedad de mtodos de ordenamiento que nos permiten organizar con rapidez los elementos que se encuentran dentro de

un vector o archivo. La eleccin de un determinado mtodo de ordenamiento depende del tamao del vector que se desea ordenar Mtodos de Ordenacin Elementales Los mtodos de ordenacin elementales proporcionan:

Una terminologa bsica. Un mecanismo bsico que puede extenderse a otros mtodos ms generales, sofisticados y con mejor desempeo. Tpicamente, los mtodos de ordenacin elementales tienen peor

desempeo que los sofisticados, pero existen muchas aplicaciones en las que es mejor utilizar un mtodo de ordenacin elemental. Por ejemplo, cuando el algoritmo se utiliza pocas veces y/o se ordenan pocos elementos. Como regla general se tiene que los mtodos elementales necesitan cerca de pasos para ordenar elementos organizados al azar.

En general, no se recomienda su uso para ordenar:


Archivos grandes. Archivos clasificados aleatoriamente. Por su parte, mtodos ms avanzados pueden lograr desempeos de

orden

. Ms an, se puede demostrar que ningn mtodo de comparaciones entre claves

ordenacin puede utilizar menos de cuando stas estn organizadas al azar. Terminologa

En el contexto de los mtodos de ordenacin, cada elemento de dato tiene su clave, y los mtodos de ordenacin trabajan ordenando los elementos de dato segn sus claves. Por lo regular, los mtodos comparan

las claves e intercambian los elementos de dato. En lugar de desplazar fsicamente los elementos de datos, con frecuencia, slo se intercambian ndices, punteros o referencias. Esto se denomina ordenacin indirecta. Un mtodo de ordenacin que trabaja sobre un conjunto de datos que se encuentra en memoria (e.g., un arreglo, una lista) se dice que es un mtodo de ordenacin interna. Por el contrario, si el conjunto de datos almacenados en archivos no pueden ser cargados en memoria (por ejemplo, por razones de tamao) y el mtodo de ordenacin opera sobre los archivos, se dice que es de ordenacin externa. Evidentemente, en la ordenacin interna se accede a los elementos de dato ms fcilmente, mientras que en la ordenacin externa se accede a los elementos de dato de forma secuencial o al menos en grades bloques. Los mtodos de ordenacin se pueden clasificar de acuerdo a sus requerimientos de memoria. Los mtodos in situ son aquellos que requieren ninguna o muy poca memoria extra. En el otro extremo, existen mtodos que requieren mucha memoria extra. Una caracterstica que puede ser importante es la estabilidad del mtodo de ordenacin. Un algoritmo de ordenacin es estable si elementos de dato con la misma clave conservan su orden relativo luego de su aplicacin. Tpicamente, los mtodos elementales son estables mientras que la mayora de los algoritmos sofisticados no lo son. Entre los mtodos de ordenacin elementales estn Seleccin e Insercin, los cuales son descritos a continuacin: Mtodo de Ordenacin por Seleccin El mtodo de ordenamiento por seleccin consiste en encontrar el menor de todos los elementos del arreglo e intercambiarlo con el que est en la primera posicin. Luego el segundo ms pequeo, y as sucesivamente hasta ordenar todo el arreglo.

Procedimiento Selection Sort Paso 1: [Para cada pos. del arreglo] For i <- 1 to N do Paso 2: [Inicializa la pos. del menor] menor <- i Paso 3: [Recorre todo el arreglo] For j <- i+1 to N do Paso 4: [Si a[j] es menor] If a[j] < a[menor] then Paso 5: [Reasigna el apuntador al menor] min = j Paso 6: [Intercambia los datos de la pos. min y posicin i] Swap(a, min, j). Paso 7: [Fin] End. Ejemplo: El arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e']. Se empieza por recorrer el arreglo hasta encontrar el menor elemento. En este caso el menor elemento es la primera 'a'. De manera que no ocurre ningn cambio. Luego se procede a buscar el siguiente elemento y se encuentra la segunda 'a'. Esta se intercambia con el dato que est en la segunda posicin, la 's', quedando el arreglo as despus de dos recorridos: a =

['a','a','o','r','t','i','n','g','e','x','s','m','p','l','e']. El siguiente elemento, el tercero en orden de menor mayor es la primera 'e', la cual se intercambia con lo que est en la tercera posicin, o sea, la 'o'. Le sigue la segunda 's', la cual es intercambiada con la 'r'. El arreglo ahora se ve de la siguiente manera: a = ['a','a','e','e','t','i','n','g','o','x','s','m','p','l','r']. De esta manera se va buscando el elemento que debe ir en la siguiente posicin hasta ordenar todo el arreglo. El nmero de comparaciones que realiza este algoritmo es:

Para el primer elemento se comparan n-1 datos, en general para el elemento i-simo se hacen n-i comparaciones, por lo tanto, el total de comparaciones es: la sumatoria para i de 1 a n-1 (n-i) = 1/2 n (n-1). El algoritmo de ordenacin por seleccin de una lista tiene los siguientes pasos: 1. Encontrar el mayor elemento de la lista 2. Intercambiar el mayor elemento con el elemento del subndice 1 3. A continuacin se busca el mayor elemento en la sublista de subndices de 2 hasta n y se intercambia con el elemento de subndice 2; por consiguiente, se sita el segundo elemento mayor en la posicin 2 4. A continuacin se busca el elemento mayor en la sublista de 3 hasta n, y as sucesivamente. Ordenamiento por seleccin en forma descendente for i:= 1 to N-1 do for j:= i+1 to N do if v[ i ] < v[ j ] then begin aux := v[ j ]; v[ j ] := v[ i ]; v[ i ] := aux; end; Si desea realizar el ordenamiento de forma ascendente, se sigue el mismo criterio pero en lugar de intercambiar al encontrar un mayor se

intercambia al encontrar un menor. Esto se traduce en cambiar la condicin de > a <. El mtodo descrito anteriormente realiza cambios cada vez que encuentra un elemento menor o mayor segn sea el caso. Esto puede

mejorarse

al realizar un solo cambio, despus de haber determinado el

mayor / menor elemento y su posicin.

A continuacin se presenta una corrida en fro del algoritmo a fin de observar el movimiento de los valores en el arreglo hasta quedar ordenados. que se intercambia una sola vez por cada iteracin. Note

Los elementos a

reubicarse estn indicados con las flechas, el elemento resaltado indica la posicin del ndice.

Supongamos que tenemos un arreglo con los datos, entonces el procedimiento es como sigue: 1. Se sita en el primer elemento (i=0). 2. Se busca el elemento ms pequeo de arreglo (desde i hasta el final). 3. Se intercambia el elemento ms pequeo con el que est en la posicin i. 4. Se incrementa i (i++). Ntese que se gasta la mayor parte del tiempo en intentar en encontrar el elemento mnimo.

A continuacin se presenta una implementacin en Java del mtodo de ordenacin por seleccin: /** * Clase que implementa mtodos de ordenacin elementales. */ public class Sorting { static public void selectionSort(Comparable array[]) { // No se incluye validacin de parmetro de entrada. int min; for (int i = 0; i < array.length; i++) { min = i; for (int j = i + 1; j < array.length; j++) { if (array[j].compareTo(array[min]) < 0) { min = j; } Sort.swap(array, min, i); } } private static void swap(Comparable[] array, int i, int j) { Comparable tmp = array[i]; array[i] = array[j]; array[j] = tmp;

El mtodo de ordenacin por seleccin: 1. Est basado en el enfoque de fuerza bruta. 2. Funciona bien con archivos pequeos. 3. Cada elemento se mueve slo una vez. Mtodo de Ordenacin por Insercin Este mtodo 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 posicin 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 comparacin pues se encontr que el elemento ya est ordenado y se coloca en su posicin (que es la siguiente a la del ltimo nmero con el que se compar). Procedimiento Insertion Sort Este procedimiento recibe el arreglo de datos a ordenar a[] y altera las posiciones de sus elementos hasta dejarlos ordenados de menor a mayor. N representa el nmero de elementos que contiene a[]. Paso 1: [Para cada pos. del arreglo] For i <- 2 to N do Paso 2: [Inicializa v y j] v <- a[i] j <- i. Paso 3: [Compara v con los anteriores] While a[j-1] > v AND j>1 do Paso 4: [Recorre los datos mayores] Set a[j] <- a[j-1], Paso 5: [Decrementa j] set j <- j-1. Paso 6: [Inserta v en su posicin] Set a[j] <- v. Paso 7: [Fin] End.

Ejemplo: Si el arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e'], el algoritmo va a recorrer el arreglo de izquierda a derecha. Primero toma el segundo dato 's' y lo asigna a v y i toma el valor de la posicin actual de v. Luego compara esta 's' con lo que hay en la posicin j-1, es decir, con 'a'. Debido a que 's' no es menor que 'a' no sucede nada y avanza i. Ahora v toma el valor 'o' y lo compara con 's', como es menor recorre a la 's' a la posicin de la 'o'; decrementa j, la cual ahora tiene la posicin en dnde estaba la 's'; compara a 'o' con a [j-1], es decir, con 'a'. Como no es menor que la 'a' sale del for y pone la 'o' en la posicin a[j]. El resultado hasta este punto es el arreglo siguiente: a = ['a','o','s','r',....] As se contina y el resultado final es el arreglo ordenado: a = ['a','a','e','e','g','i','l','m','n','o','p','r','s','t','x'] Considere que los elementos estn uno tras otro, el mtodo consiste en insertar cada elemento en el lugar apropiado entre los elementos que ya han sido considerado (mantenindolos ordenados). Es similar a la forma en que se ordena un juego de cartas. Por ejemplo: EJEMPLOAORDENAR EJ EJE EEJM EEJMP EEJMPL E E J L M P ...

A continuacin se muestra una implementacin en Java del mtodo de ordenacin por insercin: static public void insertionSort(Comparable array[]) { // No se incluye validacin de parmetro de entrada. int min; for (int i = 1; i < array.length; i++) { Comparable tmp = array[i]; int j; for (j = i; j > 0 && tmp.compareTo(array[j-1]) < 0; j--) { array[j] = array[j-1]; } array[j] = tmp; Caractersticas de Rendimiento de los Mtodos de Ordenacin Elementales

La simple inspeccin de las implementaciones anteriores sirve de evidencia de que los mtodos elementales son cuadrticos (tanto en el peor caso como en el caso medio) y no necesitan memoria extra (in situ).

La aproximadamente nmero de

ordenacin comparaciones comparaciones y

por seleccin utiliza intercambios. est El dado

por: Si entonces el nmero de comparaciones es igual a

Por otra parte, puede haber mximo

intercambios. Estos

resultados son independientes del conjuntos de datos de entrada, entonces se dice que el mtodo de seleccin es insensible a los datos de entrada.

La aproximadamente

ordenacin comparaciones y

por insercin utiliza intercambios en el comparaciones

caso medio y dos veces ms en el peor caso ( y

intercambios). Ntese que cuando el archivo est ordenado la ).

ordenacin por insercin es lineal (

Muchas veces se abusa de los mtodos de ordenacin de propsito general, en especial en estos casos donde el mtodo de insercin supera a los mtodos sofisticados. Por ejemplo,

supongamos que se desea aadir algunos elementos a una lista ordenada para obtener una lista ordenada ms grande. Para ello: 1. Aada los nuevos elementos al final del archivo. 2. Llame al mtodo de ordenacin por insercin.

Se puede demostrar que cualquier algoritmo de ordenacin que intercambie elementos adyacentes tiene un tiempo de ejecucin promedio (cota inferior).

Conclusin

El Ordenamiento es la operacin de arreglar los registros de una tabla en algn orden secuencial de acuerdo a un criterio de ordenamiento, se puede decir que el propsito principal de un ordenamiento es el de facilitar las bsquedas de los miembros del conjunto ordenado y para realizar este ordenamiento existen varias mtodos los cuales consisten en un algoritmo que recibe como entrada a un conjunto de datos que son necesarios de ordenar segn cierto(s) criterio(s). El objetivo fundamental de stos mtodos es el de facilitar la bsqueda de datos segn estos mismos criterios. Entre los mtodos estn por Seleccin y por Insercin. El mtodo de ordenacin por seleccin tiene como funcin principal encontrar el menor de todos los elementos del arreglo e intercambiarlo con el que est en la primera posicin; mientras que el mtodo por insercin consiste en tomar 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.

Potrebbero piacerti anche