ordenación rápida detalla - notas de implementación de algoritmos

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

  1. Tomado como un número de referencia de un número de inicio en el número de columnas.
  2. proceso de partición, que la gran cuenta llena puso derecha, es menor o igual al número de full-puso sobre la izquierda.
  3. 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: la ( norte Iniciar sesión 2 norte ) O (n \ log_2 n)
peores (columnas casi ordenados a ser ordenados): la ( norte 2 ) O (n ^ 2)
Promedio: la ( norte Iniciar sesión 2 norte ) O (n \ log_2 n)

2, la complejidad del espacio

la ( norte Iniciar sesión 2 norte ) O (n \ log_2 n)

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);    //对右子区间递归进行快排

    }
}

3, el programa de ejemplo de implementación

http://www.huangjihao.com/index.php/archives/800

Publicado 35 artículos originales · ganado elogios 1 · vistas 1838

Supongo que te gusta

Origin blog.csdn.net/qq_40672635/article/details/104900294
Recomendado
Clasificación