[Estructura de datos: clasificación manual de lágrimas, parte 3] Clasificación de burbujas

Tabla de contenido

1. Algoritmos de clasificación comunes

1.1 Idea básica de clasificación de intercambio

2. Implementación de Bubble Sort

2.1 Idea básica

2.2 Clasificación de un solo paso

2.2.1 Análisis de clasificación de un solo paso

2.2.2 Código de implementación para la clasificación de un solo paso

3. Implementación completa del código de tipo burbuja

3.1 Análisis del pensamiento

3.2 Implementación del código

4. Complejidad del tiempo

5. Algoritmo de optimización

5.1 Ideas de algoritmos de optimización

5.2 Implementación del código del algoritmo de optimización

6. Resumen de las características de la clasificación por burbujas


1. Algoritmos de clasificación comunes

1.1 Idea básica de clasificación de intercambio

La clasificación de burbujas es una de las clasificaciones de intercambio, primero comprendamos las siguientes ideas de clasificación de burbujas.

Idea básica: el llamado intercambio es intercambiar las posiciones de los dos registros en la secuencia de acuerdo con el resultado de la comparación de los valores clave de los dos registros en la secuencia. Los registros con valores clave más pequeños se mueven al frente a la secuencia.

2. Implementación de Bubble Sort

2.1 Idea básica

En este artículo, hablamos de la clasificación de burbujas en orden ascendente como ejemplo .

Idea básica: compare el tamaño del número anterior y el siguiente número en la matriz, si el número actual es mayor que el siguiente número, intercambiaremos los dos números, recorreremos toda la matriz, juzgaremos e intercambiaremos constantemente.

2.2 Clasificación de un solo paso

2.2.1 Análisis de clasificación de un solo paso

Al ordenar en un solo paso, el primer paso ordena el número máximo al final de la matriz.

2.2.2 Código de implementación para la clasificación de un solo paso

for (int j = 1; j < n; j++)
{
    if (a[j - 1] > a[j])
    {
        int tmp = a[j - 1];
        a[j - 1] = a[j];
        a[j] = tmp;
    }
}

3. Implementación completa del código de tipo burbuja

3.1 Análisis del pensamiento

Vemos que cuando se ordena el primer paso de un solo paso, el valor máximo se coloca al final de la matriz Según este análisis, podemos ordenar completamente la matriz completa organizando n-1 pases.

¿Por qué es n-1 veces aquí?Cuando se ordena el penúltimo número más pequeño, el penúltimo número más pequeño se ordenará naturalmente.

3.2 Implementación del código

void bubble_sort(int* a, int n)
{
	for (int i = 0; i < n - 1; i++)
	{
		for (int j = 1; j < n - i; j++)
		{
			if (a[j - 1] > a[j])
			{
				int tmp = a[j - 1];
				a[j - 1] = a[j];
				a[j] = tmp;
			}
		}
	}
}

4. Complejidad del tiempo

Complejidad de tiempo de clasificación de burbujas: O (N ^ 2).

Si la matriz está ordenada o desordenada es O(N^2), porque no importa si está ordenada o no, necesitamos comparar el tamaño, y el tamaño está solo en el bucle interno, por lo que la complejidad del tiempo no tiene nada que ver. con si la matriz está ordenada o no.

5. Algoritmo de optimización

5.1 Ideas de algoritmos de optimización

De hecho, no es difícil para nosotros pensar que si la matriz está ordenada, entonces no hay necesidad de repetir tantas veces.

P: Entonces, ¿cómo podemos juzgar que la matriz está ordenada?

R: En realidad, no es difícil. Cuando se ordena nuestra matriz, no habrá intercambio. Esta es la clave del algoritmo de optimización.

Entonces, ¿cómo lo escribimos? Definimos una bandera = 1 fuera del ciclo interno. Asumiendo que está en orden, cambiamos la bandera a 0 en la instrucción de intercambio. Cuando finaliza el ciclo interno, juzgamos si la bandera es 1. Si es 1, significa que la matriz está en orden, se rompe en este momento y salta fuera del ciclo completo.

5.2 Implementación del código del algoritmo de optimización

void bubble_sort(int* a, int n)
{
	for (int i = 0; i < n - 1; i++)
	{
		int flag = 1;
		for (int j = 1; j < n - i; j++)
		{
			if (a[j - 1] > a[j])
			{
				flag = 0;
				int tmp = a[j - 1];
				a[j - 1] = a[j];
				a[j] = tmp;
			}
		}
		if (1 == flag)
			break;
	}
}

Complejidad de tiempo óptima después de la optimización: O(N) . En este momento, es solo el primer bucle para juzgar si está en orden.

6. Resumen de las características de la clasificación por burbujas

1. La clasificación de burbujas es una clasificación muy fácil de entender
2. Complejidad de tiempo: O(N^2)
3. Complejidad de espacio: O(1)
4. Estabilidad: estable

Supongo que te gusta

Origin blog.csdn.net/Ljy_cx_21_4_3/article/details/131647176
Recomendado
Clasificación