(3) Algoritmo de clasificación: clasificación por inserción

Ordenación por inserción: Para cada dato que ingrese desde el exterior de la cola, compárelo con la cola ordenada comenzando desde el valor máximo. Después de encontrar una posición adecuada, mueva la cola ordenada e inserte los nuevos datos en la posición correspondiente.

 

código y resultados de depuración:

#include <iostream>

using namespace std;



template <class T>
void insert_sort(T list[],int n)
{
	T in, out,tmp;

	for (out = 1; out < n; out++) //out从下标1开始的,第0个已经提前出来放好了
	{
		in = out;
		tmp = list[out];
		while (in > 0 && list[in - 1] > tmp)
		{
			list[in] = list[in - 1];  //移动已序队列

			in--;
		}
		list[in] = tmp;

	}

}

int main()
{
	int arry[10] = {5,6,2,7,3,1,9,0,4,8};

	insert_sort<int>(arry,sizeof(arry)/sizeof(arry[0]));

	for (int i = 0; i < sizeof(arry) / sizeof(arry[0]); i++)
		cout << arry[i] << " ";

	cout << endl << endl << endl;

	return 0;
}

Complejidad temporal de la ordenación por inserción:

    Número de comparaciones: 1 + 2 + 3 ... + (N-2) + (N-1) = N ^ 2/2-N / 2

   Número de intercambios: 1 + 2 + 3 ... + (N-2) + (N-1) = N ^ 2/2-N / 2

  El número total de veces es: N ^ 2-N

   De acuerdo con la regla de derivación de Big O, la complejidad de tiempo final es O (N ^ 2)

 

 

 

 

Supongo que te gusta

Origin blog.csdn.net/weixin_40204595/article/details/106588681
Recomendado
Clasificación