mohadip1 at
C++ordenación rápida
Ordenación
rápida se basa en Dividir y conquistar idea de que el algoritmo de
ordenación, a través de esta estrategia, la lista está dividida en dos
sub-columnas, repita el proceso. Por
Tony Hall propuso que, en la situación media, ordenar los N datos de
O(nlogn)comparaciones en el peor de los casos se requiere O(n^2), pero
degradado en una burbujeante situación es relativamente raro, ordenación
rápida sobre otros algoritmos de ordenación son a menudo la mejor,
debido a que el uso interno del bucle en un montón de plataformas
optimizadas.
Ordenación rápida los pasos son simples:
- Seleccione una referencia( a menudo de la lista de selección de la primera)
- Recorrer la lista, será menor que la de referencia colocado en la lista de la izquierda, es mayor que la referencia que se coloca en la lista de la derecha
- La recursividad de esta operación
El código para lograr:
Primero
se necesita un devuelve la referencia de la función de la que es
responsable desde el rango especificado en la selección de una ubicación
de referencia y el rango de la lista está ordenada, y vuelve a la
ubicación de referencia.
int División(int a[], int izquierda, int derecha) {
int base = [a la izquierda]; // toma el primer número de la referencia
, mientras que (a la izquierda < right) {
while (izquierda < derecho && a[a la izquierda] > base) {
// de derecha a izquierda en busca de la primera, que la referencia de elementos pequeños
--;
}
[a la izquierda] = a[a la derecha]; // la posición de cambio, los pequeños elementos de la izquierda
, mientras que (a la izquierda < derecho && a[a la izquierda] < base) {
// de izquierda a derecha en busca de la primera, que el elemento de referencia
++izquierda;
}
[a la derecha] = a[a la izquierda]; // posición de Conmutación, los elementos situados a la derecha
}
[a la izquierda] = base;
retorno a la izquierda;
}
int base = [a la izquierda]; // toma el primer número de la referencia
, mientras que (a la izquierda < right) {
while (izquierda < derecho && a[a la izquierda] > base) {
// de derecha a izquierda en busca de la primera, que la referencia de elementos pequeños
--;
}
[a la izquierda] = a[a la derecha]; // la posición de cambio, los pequeños elementos de la izquierda
, mientras que (a la izquierda < derecho && a[a la izquierda] < base) {
// de izquierda a derecha en busca de la primera, que el elemento de referencia
++izquierda;
}
[a la derecha] = a[a la izquierda]; // posición de Conmutación, los elementos situados a la derecha
}
[a la izquierda] = base;
retorno a la izquierda;
}
La división de la función de sólo hacer las cosas más sencillas, en
busca de una referencia, y cambiando alrededor de los elementos, de modo
que la lista en el lado izquierdo son menores que el elemento de
referencia, de modo que el lado derecho es mayor que el elemento de
referencia, necesitamos una función, por lo que la lista tiende a un
mínimo, hasta que la lista de elementos a la izquierda(y aquí me siento
un poco extrema pensado).
void quick_sort(int a[], int izquierda, int derecha) {
if (a la izquierda < right) {
int indice = División(a, izquierda, derecha); //la lista se divide
quick_sort(a, a la izquierda, i -1); //en el lado izquierdo de ordenación
quick_sort(a, i + 1, derecha); //en el lado derecho de la clase
}
}
if (a la izquierda < right) {
int indice = División(a, izquierda, derecha); //la lista se divide
quick_sort(a, a la izquierda, i -1); //en el lado izquierdo de ordenación
quick_sort(a, i + 1, derecha); //en el lado derecho de la clase
}
}
claramente se puede entender la ordenación rápida es cómo utilizar la
partición método para ordenar a través de la gran tarea de dividir en
tareas más pequeñas, y en última instancia, lograr la completa especie.