"Algoritmo Aha" Capítulo 1 - Clasificación

inserte la descripción de la imagen aquí


prefacio

Este año, la Copa Lanqiao no obtuvo el primero provincial, así que decidí establecerme para aprender el algoritmo, para facilitar el aprendizaje del algoritmo.estable, así que lo recogí, la mayoríabasico y clasicoUn libro de algoritmos "Algoritmo Aha", y decidí escribir mi proceso de aprendizaje como un blog para registrar y compartir.


1. Algoritmo de clasificación

Ordenamiento de burbuja

El más lento, y se usa cuando hay menos datos, la complejidad del tiempo es O(n^2)

tipo de cubeta

La complejidad del tiempo es la más baja, es decir, la velocidad es rápida, es O(N + C), N es el número de ciclos, C es N*(logN - logM) y M es el número de cubos. se puede ver el final de la primera sección de este libro

ordenación rápida

La complejidad del tiempo es O(N*logN), similar a la clasificación sort() de la función, que también es la clasificación que se usa a menudo en futuras competencias de algoritmos. La idea principal es dividir y conquistar

2. Clasificación de cubeta

La clasificación de cubos, como su nombre lo indica, necesita configurar muchos cubos o contenedores. Obviamente, puede ser una matriz en la computadora, por lo que cuando clasificamos 0 ~ 2e9 (2 10 9), necesitamos 2 * 10 9 cubos , es decir, aplicar para 2 10^ 9 variables, incluso si solo se ordenan 3 números, todavía se necesita un espacio tan grande, lo cual es un desperdicio.

inserte la descripción de la imagen aquí
ej.: Los números en las banderas obtenidos por los cinco niños son 5 3 5 2 8 respectivamente, y luego se le pide que los clasifique de mayor a menor

#include<iostream>
using namespace std;
int book[10];//全局变量 自动 初始化为0 
int main()
{
    
    
	int t;
	for(int i=0;i<5;i++)//输入五个数字 
	{
    
    
		cin>>t;//输入的数字 
		book[t]++;//出现的数字次数++ 
	}
	for(int i=8;i>=0;i--)//i定义为分数 
		for(int j=0;j<book[i];j++)//分数出现的次数 
			cout<<i<<" ";
	return 0;
}

Los datos son los siguientes

输入:5 3 5 2 8
输出:8 5 5 3 2

3. Clasificación de burbujas

Tipo de burbuja también conocido comoOrdenamiento de burbuja, el principio es comparar dos elementos adyacentes cada vez e intercambiarlos si el orden es incorrecto.
inserte la descripción de la imagen aquí
Escribí el código sobre la clasificación de burbujas muchas veces cuando estaba aprendiendo lenguaje C. Para más detalles, puede ir al blog C language—array—summary

Por ejemplo: ahora hay 5 estudiantes cuyas puntuaciones deben ordenarse de mayor a menor. Las puntuaciones son 89 90 69 100 67

#include<iostream>
using namespace std;
int score[6];//全局变量自动初始化为0
int i,j;
int main()
{
    
    
	for(i=0;i<5;i++)//五次输入
		cin>>score[i];
		
	for(i=0;i<5-1;i++)//冒泡排序的趟数
		for(j=0;j<5-1-i;j++)
		{
    
    
			if(score[j]<score[j+1])//交换
			{
    
    
				int tmp=score[j];
				score[j]=score[j+1];
				score[j+1]=tmp;
			}
		}
	//输出
	for(i=0;i<5;i++) cout<<score[i]<<" ";
	cout<<endl;
	
	return 0;
}

Los datos son los siguientes

输入:89 90 69 100 67
输出:100 90 89 69 67

3. Clasificación rápida

Explicación de conocimiento de clasificación rápida:

La idea central de clasificación rápida :Basado en divide y vencerás
El contenido principal de ordenación rápida es:

  • Determine el punto de corte: q[L],q[(L+R)/2],q[R]其实就是分为左边界,中间值和右边界,甚至随机一个数

  • ajustar el intervalo,其实就是把元素放到x的两侧

  • Procese recursivamente los párrafos izquierdo y derecho.
    inserte la descripción de la imagen aquí
    El siguiente es elExplicar el intervalo de ajuste del paso 2
    inserte la descripción de la imagen aquí

  • Dos punteros, i, j se mueven constantemente aquí

  • cuando el puntero iCuando el elemento puntiagudo <= x, el puntero se mueve hacia la derecha,De manera similar, cuando el puntero j encuentra >=x,puntero se mueve hacia la izquierda

  • cuando señaloDeténgase cuando el elemento puntiagudo >= x, espera hasta que el puntero jDeténgase cuando el elemento puntiagudo <= x

  • Finalmente hice estoSe intercambian e intercambian dos elementos.

inserte la descripción de la imagen aquí
Lo anterior es el conocimiento básico de clasificación rápida., algunos ejercicios se explicarán a continuación.Consolidar y practicarLo que sabemos

Mapa de pensamiento de fila rápida:
inserte la descripción de la imagen aquí

Para obtener más información, consulte las notas del algoritmo acw que escribí [algoritmo] Curso básico de algoritmo - Algoritmo de clasificación (con notas | colección recomendada)


Resumir

Los algoritmos son ciertamente difíciles, pero no todos son muy buenos al principio, ¡sino solo cuando comienzan! ! !

Supongo que te gusta

Origin blog.csdn.net/congfen214/article/details/131647684
Recomendado
Clasificación