Notas básicas de estudio de clasificación (burbujeo, selección, inserción)

Clasificación: Una operación que a menudo se realiza en una computadora, cuyo propósito es ajustar un conjunto de secuencias de registro "fuera de orden" a una secuencia de registro "ordenada".

El algoritmo de clasificación más simple es: clasificación de burbujas, clasificación de selección y clasificación de inserción.

Tipo de burbuja

La idea básica: dos números se comparan en tamaño, el más grande se hunde y el más pequeño se eleva.

  • Compare los dos datos adyacentes, si el segundo número es pequeño, intercambie posiciones.
  • Compare dos pares de atrás hacia adelante, hasta los dos primeros datos. Finalmente, el número más pequeño se cambia a la posición más frontal, por lo que colocamos el número más pequeño en la posición más frontal.
  • Continuar para repetir el proceso, podemos alcanzar la primera segunda ronda \ (2 \) pequeños números en la primera \ (2 \) posiciones, la primera implementado en la tercera ronda \ (3 \) números pequeños en La posición \ (3 \) , ..., después de realizar la ronda \ (n-1 \) , podemos asegurarnos de que el número \ (n \) esté organizado en orden de pequeño a grande.

El código de implementación es el siguiente:

#include <bits/stdc++.h>
using namespace std;
int n, a[1000];
int main() {
    cin >> n;
    for (int i = 1; i <= n; i ++) cin >> a[i];
    for (int i = 1; i < n; i ++) {  // 需要执行n-1轮
        for (int j = n-1; j >= i; j --) {
            if (a[j] > a[j+1]) {
                swap(a[j], a[j+1]); // swap函数用于交换两个数
            }
        }
    }
    for (int i = 1; i <= n; i ++) cout << a[i] << " ";
    return 0;
}

Seleccionar orden

Idea básica:

  • En una matriz desordenada de longitud \ (n \) , después del primer recorrido, \ (n-1 \) número, encuentre el valor más pequeño e intercambíelo con el primer elemento;
  • Después del segundo número transversal \ (n-2 \) , encuentre el valor más pequeño e intercambíelo con el segundo elemento;
  • ......
  • Itere el último número en el tiempo \ (n-1 \) , encuentre el valor más pequeño e intercambíelo con el elemento \ (n-1 \) , la clasificación se completa.

El código de implementación es el siguiente:

#include <bits/stdc++.h>
using namespace std;
int n, a[1000];
int main() {
    cin >> n;
    for (int i = 1; i <= n; i ++) cin >> a[i];
    for (int i = 1; i < n; i ++) {  // 执行n-1轮
        for (int j = i+1; j <= n; j ++) {   // j从i+1到n遍历
            if (a[i] > a[j]) {  // 如果a[i]比a[j]大,交换他俩的值
                swap(a[i], a[j]);   // 这样能够该轮循环结束时保证a[i]比它后面的所有数都要小
            }
        }
    }
    for (int i = 1; i <= n; i ++) cout << a[i] << " ";
    return 0;
}

Insertar ordenación

Idea básica:

En un grupo de números que se ordenarán, suponiendo que los primeros números n-1 ya estén ordenados, ahora inserte el enésimo número en la secuencia numérica ordenada anterior, de modo que los n números también se ordenen en orden. Repita este ciclo hasta que todos estén en orden.

Podemos seguir el ejemplo de naipes racionales para recordar visualmente el orden de inserción:

El código de implementación es el siguiente:

#include <bits/stdc++.h>
using namespace std;
int n, a[1000];
int main() {
    cin >> n;
    for (int i = 1; i <= n; i ++) cin >> a[i];
    for (int i = 1; i <= n; i ++) {
        int j = i, tmp = a[i];
        while (j>1 && a[j-1]>tmp) {
            a[j] = a[j-1];
            j --;
        }
        a[j] = tmp;
    }
    for (int i = 1; i <= n; i ++) cout << a[i] << " ";
    return 0;
}

Supongo que te gusta

Origin www.cnblogs.com/quanjun/p/12712451.html
Recomendado
Clasificación