En primer lugar, ¿cuál es la clasificación rápida
Ordenar rápida ordenamiento de burbuja es una mejora
* Móvil figura de tutorial principiante
En segundo lugar, la implementación
- Tomado como un número de referencia de un número de inicio en el número de columnas.
- proceso de partición, que la gran cuenta llena puso derecha, es menor o igual al número de full-puso sobre la izquierda.
- Y entonces el segundo paso se repite en todo el intervalo, hasta que cada sección es sólo un número.
En tercer lugar, los parámetros de rendimiento en rápido Ordenado
1, tiempo de complejidad
(Columna que ser resuelto trastorno cerrar) preferentemente:
peores (columnas casi ordenados a ser ordenados):
Promedio:
2, la complejidad del espacio
3, es estable
inestable
4, cualquier tipo adecuado de almacenamiento
almacenamiento secuencial
En cuarto lugar, la aplicación del código
1, para el derecho de colocar un gran número de números de referencia, eliminar pequeños números en la línea de base izquierda
Hay muchas maneras
Como se usa en este documento,two pointers
① primero A [1] a una variable temp de almacenamiento temporal, y para hacer dos subíndices izquierda, derecha punto final a una secuencia (por ejemplo, Orden izquierda = 1, derecha = n)
Mientras el elemento apuntado derecho ② A [derecha] superior a la temperatura, a la derecha continuará hacia la izquierda; cuando un tiempo A [derecha] ≤temp cuando un elemento A [derecha] se trasladó al elemento que señala izquierdo A [dejó] a.
③ punto izquierdo siempre que los elementos A [izquierdo] no exceda temp, se desplaza a la derecha y la izquierda, cuando en algún momento A [dejó]> temp, el elemento A [izquierdo] movido al punto derecho a los elementos A [derecha] en .
④ ②③ repetida, hasta que la izquierda y la derecha conocido, la TEMP (es decir, el A original [1]) en el se encuentran.
El código para lograr esta función
// 对于[left,right]区间进行划分
int Partition(int A[], int left, int right){
int temp = A[left]; //将A[left]存放在temp中
while(left < right){ // 只要right 与 right不相遇
while(left < right && A[right] > temp) right--; //反复左移right
A[left] = A[right];
while(left < right && A[right] <= temp) right--; //反复左移right
A[right] = A[left];
}
A[left] = temp; //把temp放到left与right相遇的地方
return left; //返回相遇的位置的下标
}
2, rápida especie lograr
void quickSort(int A[], int left, int right){
if(left < right){
int pos = Partition(A, left, right);
quickSort(A, left, pos - 1); //对左子区间递归进行快排
quickSort(A, pos + 1, right); //对右子区间递归进行快排
}
}