Combinar cardinalidad de intercambio tipo de selección simple

1 tipo de intercambio

La idea básica es: compararlos por pares e intercambiarlos si hay un orden inverso, hasta que todos los registros estén ordenados.
Métodos comunes de clasificación de intercambio:

  • Clasificación de burbujas O ( n 2 ) O(n^2)O ( n.2 )
  • Ordenación rápida O (nlog 2 n) O(nlog_2n)O ( n l o g2norte )

1.1 Clasificación de burbujas

La clasificación de burbujas se basa en una simple idea de intercambio. Cada viaje comparará continuamente los registros en pares y los intercambiará de acuerdo con las reglas del primero más pequeño y el último del más grande.
Insertar descripción de la imagen aquí

Algunas conclusiones:

  • nnn registros, se necesita un total den − 1 n-1norte1 viaje
  • mm_ _m veces es necesario compararn − m nmnortem veces

1.1.1 Algoritmo de clasificación de burbujas

void bubble_sort(SqList &L)//冒泡排序算法
{
    
    
	int m,i,j;
	RedType x;//交换时临时存储
	for(m=1; m<=n-1; ++m)//总共需要m趟
	{
    
    
		for(j=1; j<=n-m; ++j)//交换需要n-m次
		{
    
    
			if (L.r[j].key > L.r[j+1].key)
			//两个相邻元素进行比较
			//发生逆序
			{
    
    
				x = L.r[j];
				L.r[j] = L.r[j+1];
				L.r[j+1] = x;//交换
			}
		}
	}
}

Insertar descripción de la imagen aquí
Una vez que esté ordenado, no hay necesidad de realizar intercambios inútiles.

Mejoras en el algoritmo:

void bubble_sort(SqList &L)//冒泡排序算法
{
    
    
	int m,i,j;flag = 1;//flag作为是否交换的标记
	RedType x;//交换时临时存储
	for(m=1; m<=n-1 && flag==1; ++m)//总共需要m趟
	{
    
    
		flag = 0;
		for(j=1; j<=n-m; ++j)//交换需要n-m次
		{
    
    
			if (L.r[j].key > L.r[j+1].key)
			//两个相邻元素进行比较
			//发生逆序
			{
    
    
				flag = 1;//发生交换,flag置为1
				x = L.r[j];
				L.r[j] = L.r[j+1];
				L.r[j+1] = x;//交换
			}
		}
	}
}

1.1.2 Análisis de desempeño

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

1.2 Clasificación rápida

Idea básica: tomar cualquier elemento, como el primer elemento, como centro.
Insertar descripción de la imagen aquí
Usando la idea de recursividad, la condición final es que solo quede un elemento en la sublista.
Insertar descripción de la imagen aquí

  • Idea básica: mediante una clasificación, los registros a ordenar se dividen en dos partes independientes. Las palabras clave de una parte del registro son más pequeñas que las palabras clave de la otra parte del registro. Luego, las dos partes de los registros se pueden ordenar. por separado para lograr la secuencia completa.Ordenada.

  • Implementación específica: seleccione un número del medio como referencia, compare todos los elementos con él, mueva los pequeños hacia la izquierda y los grandes hacia la derecha.

  • (Pivote) Número del medio: Puede ser el primer número, el último número, el número del medio, cualquier número, etc.

1.2.1 Algoritmo de clasificación rápida

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

1.2.2 Análisis de desempeño

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

1.2.3 Características de la clasificación rápida

  1. La subtabla de cada pasada se forma utilizando el método de aproximación alterna desde ambos extremos hasta el centro.
  2. Dado que las operaciones en cada subtabla son similares en cada pasada, se puede utilizar un algoritmo recursivo.
  3. La clasificación rápida es un algoritmo inestable

Insertar descripción de la imagen aquí

2 Clasificación de selección simple

Insertar descripción de la imagen aquí

Diagrama esquemático:

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

2.1 Algoritmo de clasificación simple

Insertar descripción de la imagen aquí

2.1.1 Análisis de desempeño

Insertar descripción de la imagen aquí

2.2 Clasificación del montón

Insertar descripción de la imagen aquí
La esencia del montón es un árbol binario completo.
Un montón de raíces pequeño significa que cada nodo raíz es más pequeño que los hijos izquierdo y derecho; un montón de raíces grande significa que cada nodo raíz es más grande que los hijos izquierdo y derecho. Es decir, una raíz es el valor máximo y una raíz es el valor mínimo, que se puede utilizar para ordenar.
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

2.2.1 Ajuste del montón

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Para pilotes de raíces grandes, busque valores grandes.

Se puede ver que
se puede obtener un montón "cribando" repetidamente una secuencia desordenada,
es decir, el proceso de construir un montón a partir de una secuencia desordenada es un proceso de "cribado" repetido.

Obviamente:
un árbol binario de un solo nodo es un montón; en un árbol binario completo, todos los nodos con nodos hoja (número de serie ⅰ>/2 ⅰ>/2>/2 ) El subárbol enraizado en la raíz es un montón.

Insertar descripción de la imagen aquí
Dado que el montón es esencialmente una tabla lineal, podemos almacenar un montón de forma secuencial.Insertar descripción de la imagen aquí

2.2.2 Algoritmo del proceso de selección

Insertar descripción de la imagen aquí

2.2.3 Algoritmo de creación de montón

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

2.2.4 Análisis de desempeño

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

3 Combinar orden

Idea básica: fusionar dos o más subsecuencias ordenadas en una secuencia ordenada.
Insertar descripción de la imagen aquí
Venid de dos en dos. (o dos o más)
Insertar descripción de la imagen aquí
requiere un total de log 2 n log_2niniciar sesión _2n veces.
Insertar descripción de la imagen aquí
Se pueden comparar y fusionar tablas lineales y punteros dobles.

Ahora las dos subsecuencias son adyacentes. También hay dos indicaciones.
Insertar descripción de la imagen aquí

3.1 Análisis de desempeño

Insertar descripción de la imagen aquí

4 tipo de base

No es necesario comparar, pensar es en distribución y recaudación. También se llama clasificación de cubos o clasificación de cajas: configure varias cajas, coloque el registro con la clave k en la k-ésima caja y luego conecte las que no estén vacías por número de serie.

Ordenación por base: Los números tienen un rango y se componen de diez números del 0 al 9. Luego solo necesitas configurar diez cuadros y ordenarlos por unidades, decenas, centenas...

Insertar descripción de la imagen aquí
Lo anterior está en orden. Luego divida según el lugar de las decenas: Insertar descripción de la imagen aquí
el lugar de las decenas está en orden, divida según el lugar de las centenas:
Insertar descripción de la imagen aquí
se completa la clasificación por descubrimiento.

4.1 Análisis de desempeño

Insertar descripción de la imagen aquí

5 Comparación de varios algoritmos de clasificación

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_44673253/article/details/126253226
Recomendado
Clasificación