sábado, 26 de septiembre de 2015

Métodos de Ordenamiento en C++ / Código Fuente
















Método de ordenamiento Bubble sort

Este es el algoritmo más sencillo probablemente. Ideal para empezar. Consiste en ciclar repetidamente a través de la lista, comparando elementos adyacentes de dos en dos. Si un elemento es mayor que el que está en la siguiente posición se intercambian.


Link de descarga





Método de ordenamiento Selection  Sort
Este algoritmo también es sencillo. Consiste en lo siguiente:
  1. Buscas el elemento más pequeño de la lista.
  2. Lo intercambias con el elemento ubicado en la primera posición de la lista.
  3. Buscas el segundo elemento más pequeño de la lista.
  4. Lo intercambias con el elemento que ocupa la segunda posición en la lista.
  5. Repites este proceso hasta que hayas ordenado toda la lista.

Link de descarga
Método de ordenamiento Insertion Sort
Este algoritmo también es bastante sencillo. ¿Has jugado cartas?. ¿Cómo las vas ordenando cuando las recibes? Yo lo hago de esta manera: tomo la primera y la coloco en mi mano. Luego tomo la segunda y la comparo con la que tengo: si es mayor, la pongo a la derecha, y si es menor a la izquierda. 
Después tomo la tercera y la comparo con las que tengo en la mano, desplazándola hasta que quede en su posición final. Continúo haciendo esto, insertando cada carta en la posición que le corresponde, hasta que las tengo todas en orden. ¿Lo haces así tu también? Bueno, pues si es así entonces comprenderás fácilmente este algoritmo, porque es el mismo concepto.
Para simular esto en un programa necesitamos tener en cuenta algo: no podemos desplazar los elementos así como así o se perderá un elemento. Lo que hacemos es guardar una copia del elemento actual (que sería como la carta que tomamos) y desplazar todos los elementos mayores hacia la derecha. Luego copiamos el elemento guardado en la posición del último elemento que se desplazó.



Link de descarga
Método de ordenamiento Shaker Sort
La idea de este algoritmo es mezclar las dos formas del método de la burbuja.
Este algoritmo tiene 2 etapas o hasta tres etapas : 

la primera etapa consiste en trasladar los elementos más pequeños hacia la parte izquierda del arreglo, guardando en una variable la posición del ultimo elemento intercambiado. 

La segunda etapa consiste en llevar los elementos más grandes hacia la derecha del arreglo,guardando la posición del ultimo elemento intercambiado en otra variable , cada pasada tiene dos etapas.

En la primera etapa es "de derecha a izquierda" y de izquierda a derecha se trasladan los elementos más pequeños hacia la parte izquierda del arreglo, almacenando en una variable la posición del último elemento intercambiado. 

La segunda etapa también es de derecha a izquierda" y de izquierda a derecha estas sucesivas pasadas trabajan con los componentes del arreglo comprendidos entre las posiciones almacenadas en las variables.


Link de descarga
Método de ordenamiento Shell Sort
El ordenamiento Shell (Shell sort en inglés) es un algoritmo de ordenamiento. El método se denomina Shell en honor de su inventor Donald Shell que lo publicó en 1959.

El Shell sort es una generalización del ordenamiento por inserción, teniendo en cuenta dos observaciones:
1. El ordenamiento por inserción es eficiente si la entrada está "casi ordenada". 2. El ordenamiento por inserción es ineficiente, en general, porque mueve los valores sólo una posición cada vez.

El 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.



Link de descarga
Método de ordenamiento  Merge Sort
El algoritmo de Ordenamiento por mezcla (Merge sort) es un algoritmo de ordenación externo estable basado en la técnica divide y vencerás. Es de complejidad O(n log n).

Este algoritmo consiste en:
1. Si la longitud del array es 0, entonces ya está ordenada. Caso contrario:
2. DIVIDIR: divide el array desordenado en dos sub arrays, de aproximadamente la mitad del tamaño.
3. VENCER: ordena los dos arrays de manera recursiva aplicando el ordenamiento por mezcla.
4. COMBINAR: combina las los dos sub arrays en una sola secuencia ordenada.
De ahí su comparación con el paradigma algorítmico: "Divide y Vencerás".



Link de descarga
Método de ordenamiento Quick Sort
  1. El ordenamiento de QuickSort es actualmente el más eficiente y veloz de los métodos de ordenamiento interno.
  2. Es también conocido con el nombre de ordenamiento rápido.
  3. Este método de ordenamiento es una mejora sustancial del método de intercambio directo y recibe el nombre de QuickSort por la velocidad en que ordena los elementos del arreglo.
  4. El algoritmo original es recursivo, pero se utilizan versiones iterativas para mejorar su rendimiento (los algoritmos recursivos son en general más lentos que los iterativos, y consumen más recursos).

Link de descarga
Método de ordenamiento Heap Sort
El Heapsort es un método de ordenamiento por selección tipo árbol que organiza los datos de forma tal que los nodos del nivel mas bajo están mas a la izquierda posible y eso permite que al recorrer el camino desde la raiz hacia las hojas los datos se encuentren en orden descendente y la información sea almacenada.



Es un método de ordenamineto por selección.

Heap:es un árbol binario de atura minima,en que los nodos del nivel mas bajo están mas a la izquierda posible.

La información es almacenada de manera que al recorrer un camino desde la raíz hacia las hojas,os datos se encuentran en orden descendente.

Link de descarga
Código Fuente en C++ / Heap Sort



Método de ordenamiento Counting Sort
Algoritmo de ordenamiento en el que se cuenta el número de elementos de cada clase para luego ordenarlos.
Sólo puede ser utilizado para ordenar elementos que sean contables ( Números enteros) y a diferencia de otros métodos de ordenamiento este no se basa en comparaciones.
-El primer paso consiste en averiguar cuál es el intervalo dentro del que están los datos a ordenar (valores mínimo y máximo) .-Luego se crea un vector de números enteros con tantos elementos como valores haya en el intervalo [mínimo, máximo], y a cada elemento se le da el valor 0.-Se recorren todos los elementos a ordenar y se cuenta el número de apariciones de cada elemento (usando el vector que hemos creado).-Por último, basta con recorrer este vector para tener todos los elementos ordenados.


Link de descarga
Código Fuente en C++ / Counting Sort



Método de ordenamiento Radix Sort
Este ordenamiento se basa en los valores de los dígitos reales en las representaciones de posiciones de los números que se ordenan.

Por ejemplo el número 235 se escribe 2 en la posición de centenas, un 3 en la posición de decenas y un 5 en la posición de unidades.

Reglas para ordenar
  1. Empezar en el dígito más significativo y avanzar por los dígitos menos significativos mientras coinciden los dígitos correspondientes en los dos números.
  2.  El número con el dígito más grande en la primera posición en la cual los dígitos de los dos números no coinciden es el mayor de los dos (por supuesto sí coinciden todos los dígitos de ambos números, son iguales).
  3. Este mismo principio se toma para Radix Sort, para visualizar esto mejor tenemos el siguiente ejemplo. En el ejemplo anterior se ordeno de izquierda a derecha. Ahora vamos a ordenar de derecha a izquierda.
¿En qué consiste este metodo? 

Ordena por el valor de cada dígito (unidades, decenas, centenas,...).
No hace comparaciones entre datos.
Consiste en ir acomodando los números primero por unidades, luego por decenas, centenas, etc.




Link de descarga

0 comentarios:

Publicar un comentario