clasificación de inserción de estructura de datos

Insertar descripción de la imagen aquí
Mucho tiempo sin verte. He estado ocupado estos días. No he estudiado durante casi una semana y casi no estoy familiarizado con el teclado. Hoy aprendí un poco sobre cómo ordenar. También actualizaré una ordenación por inserción. para usted. Ordenaré gradualmente las ocho principales más adelante. Después de la actualización, también está el árbol binario. El editor del árbol binario tiene capacidades limitadas y es posible que haya aprendido un poco. Sin más preámbulos, entremos en el estudio de hoy.

La ordenación por inserción es algo similar a la ordenación por burbuja que aprendimos antes. En primer lugar, su complejidad espacial es O(N*N). ¿Cuál es todo el proceso de ordenación por inserción? Primero, introduzcamos un pequeño problema. Es decir, inserte un número en una matriz de secuencia ascendente. ¿Cómo lo insertamos? Primero, debemos comparar este número, comenzando desde el final. Si es mayor que este número, continuaremos buscando hacia adelante. , hasta encontrar un número mayor mayor o igual a este número, lo insertamos al final del número. Durante el proceso de inserción, si este número es menor que otros números, los otros números deben moverse hacia atrás, lo que equivale a una superposición. En cuanto a la idea , le daremos una imagen aquí para que sea más fácil de entender para todos.

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Al final seguimos caminando hacia adelante hasta encontrar una posición adecuada. Hay otro proceso en el medio, que es cubrir. No se refleja en el dibujo. Significa retroceder para cubrir si no se cumplen las condiciones. Quizás sea mejor entiéndalo mirando el código.

	int end = 9;
		int tmp = a[end + 1];
		while (end >= 0)
		{
    
    
			if (tmp < a[end])
			{
    
    
				a[end + 1] = a[end];
				end--;
			}
			else
			{
    
    
				break;
			}
		}
		a[end+1] = tmp;
	}

Supongamos que tenemos nueve números. Ahora necesitamos poner 1 en esta matriz. ¿Cómo lo cambiamos? El código anterior puede reflejarlo. Entonces, después de tener esta idea, ¿podemos simular la ordenación por inserción? De hecho, es muy fácil. Es tan sencillo como poner un bucle fuera de mí. Probémoslo.

void InsertSort(int* a, int n)
{
    
    
	int i = 0;
	for (i = 0; i < n - 1; i++)
	{
    
    
		int end = i;
		int tmp = a[end + 1];
		while (end >= 0)
		{
    
    
			if (tmp < a[end])
			{
    
    
				a[end + 1] = a[end];
				end--;
			}
			else
			{
    
    
				break;
			}
		}
		a[end+1] = tmp;
	}
}

De esta manera se puede implementar nuestra ordenación por inserción y también podemos probar
el archivo de encabezado

InsertSort.h


#include<stdio.h>

void InsertSort(int* a, int n);

void PrintInsert(int* a, int n);

InsertarOrdenar.c

#include"Insert.h"

void InsertSort(int* a, int n)
{
    
    
	int i = 0;
	for (i = 0; i < n - 1; i++)
	{
    
    
		int end = i;
		int tmp = a[end + 1];
		while (end >= 0)
		{
    
    
			if (tmp < a[end])
			{
    
    
				a[end + 1] = a[end];
				end--;
			}
			else
			{
    
    
				break;
			}
		}
		a[end+1] = tmp;
	}
}

void PrintInsert(int* a, int n)
{
    
    
	int i = 0;
	for (i = 0; i < n; i++)
	{
    
    
		printf("%d ", a[i]);
	}
	printf("\n");
}

Prueba.c

int main()
{
    
    
	int arr[] = {
    
     9,8,7,6,5,4,3,2,1 };
	InsertSort(arr, sizeof(arr) / sizeof(int));
	PrintInsert(arr, sizeof(arr) / sizeof(int));
	return 0;
}

Después de la depuración, puedes ponerlo en orden. Hoy hablaremos de un tipo. Debido a que el editor es vago, hoy solo aprendí un tipo jajaja

Nos vemos la próxima vez

Supongo que te gusta

Origin blog.csdn.net/2301_76895050/article/details/132698989
Recomendado
Clasificación