mohadip1 mohadip1@datamost.com
2019-02-14T15:53:44Z via datamost.com Web To: Public CC: Followers
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;
}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
}
}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.