Sort
Sort
El método de burbuja recibe su nombre porque como se ordenan los elementos que poco a
poco "burbujean" (o incremento) para su adecuada posiciones, al igual que el aumento de
burbujas en un vaso de refresco. La especie de burbuja en varias ocasiones compara
elementos adyacentes de un conjunto, empezando por el primero y segundo elemento, y el
cambio de ellos si este fuera el caso de orden (ascendente o descendente). Después de
comparar el primero y el segundo, se comparan el segundo y tercer elemento, y se
intercambian si este fuera el caso de orden. Este proceso continúa hasta el final de la lista.
Cuando el final se alcanza, la burbuja vuelve a clasificar los elementos de uno y dos y
se inicia el proceso de nuevo. Así que, La burbuja cuando sabe que se acaba?
cuando se examina todo el arreglo y no son necesarias mas intercambios" (por lo
tanto, el arreglo está en orden). La burbuja no pierde de vista la aparición de los
intercambios, para esto se hace uso de una bandera.
Array at beginning: 84 69 76 86 94 91
Array at beginning: 84 69 76 86 94 91
After Pass #1: 84 91 76 86 94 69
After Pass #2: 84 91 94 86 76 69
After Pass #3: 86 91 94 84 76 69
After Pass #4: 94 91 86 84 76 69
After Pass #5 (done): 94 91 86 84 76 69
=sublista sin ordenado =sublista ordenado
Si bien es un tipo fácil de programar, el método de selección es uno de los menos
eficientes. El algoritmo no ofrece ninguna manera de poner fin a principios de la especie,
aunque comienza con una lista ya ordenados.
Array at beginning: 84 69 76 86 94 91
= 1st sub-array 84 69 76 86 94 91
= 2nd sub-array 84 69 76 86 94 91
84 76 69 86 94 91
86 84 76 69 94 91
91 86 84 76 69 94
2nd sub-array empty 94 91 86 84 76 69
El algoritmo mantiene los dos subconjuntos dentro de la misma matriz. Cuando el
metodo empieza, el primer elemento en la matriz se considera el "ordenado array".
Con cada iteración del bucle, el siguiente valor en la sección sin clasificar, se coloca en
su posición correcta en la sección clasificados.
La inserción puede ser muy rápido y eficaz cuando se utiliza con conjuntos más
pequeños. Por desgracia, este pierde eficacia cuando se trata de grandes cantidades de
datos.
Echemos un vistazo a nuestra lista de los mismos valores de orden decreciente con el tipo
de shell. Recuerde, un "pass" se define como todo un viaje a través de la comparación de la
matriz y, si es necesario, intercambio de elementos.
Array at beginning: 84 69 76 86 94 91 d
Última Paso: continúa hasta que tipo d = 1 y el pase se produce sin ningún tipo de
intercambio.
Este proceso de selección, con su modelo de comparación, es un eficiente algoritmo de
clasificación.
Array at beginning: 84 69 76 86 94 91
= 1st partition
> 86 94 91 84 69 76
= 2nd partition
≤ 94 91 86 84 69 76
= elementos ordenados
94 91 86 84 69 76
94 91 86 84 69 76
Done: 94 91 86 84 76 69
//Quick Sort Functions for Descending Order
// (2 Functions)
void quicksort(int array[ ], int top, int bottom)
{
// top = subscript of beginning of vector being considered
// bottom = subscript of end of vector being considered
// this process uses recursion - the process of calling itself
int middle;
if (top < bottom)
{
middle = partition(array, top, bottom);
quicksort(array, top, middle); // sort top partition
quicksort(array, middle+1, bottom); // sort bottom partition
}
return;
}
//Function to determine the partitions
// partitions the array and returns the middle index (subscript)
int partition(int array[ ], int top, int bottom)
{
int x = array[top];
int i = top - 1;
int j = bottom + 1;
int temp;
do
{
do
{
j - -;
}while (x >array[j]);
do
{
i++;
} while (x <array[i]);
if (i < j)
{
temp = array[i]; // switch elements at positions i and j
array[i] = array[j];
array[j] = temp;
}
}while (i < j);
return j; // returns middle index
}
Ordenando el vector en forma ascendente