前言:

深入了解数据结构第四弹——排序(1)——插入排序-LMLPHP

什么是插入排序?

深入了解数据结构第四弹——排序(1)——插入排序-LMLPHP

插入排序实际上就是将一个数字按照大小顺序插入到已知的序列中去

深入了解数据结构第四弹——排序(1)——插入排序-LMLPHP

一、直接插入排序

深入了解数据结构第四弹——排序(1)——插入排序-LMLPHP

深入了解数据结构第四弹——排序(1)——插入排序-LMLPHP

插入排序的代码如下:

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

我们建立一个完整的代码示例并打印结果,给大家看看效果


//插入排序
void PrintArray(int* a, int n)
{
	for (int i = 0; i < n; i++)
	{
		printf("%d ", a[i]);
	}
	printf("\n");
}
void InsertSort(int* a, int n)
{
	for (int i = 1; i < n; i++)
	{
		int end = i - 1;
		int tmp = a[i];
		while (end >= 0)
		{
			if (tmp > a[end])
			{
				a[end + 1] = a[end];
				end--;
			}
			else
			{
				break;
			}
		}
		a[end + 1] = tmp;
	}
}

void TestInsertSort()
{
	int a[] = { 1,2,4,7,8,2,5,3 };
	PrintArray(a, sizeof(a) / sizeof(a[0]));
	InsertSort(a, sizeof(a) / sizeof(a[0]));
	PrintArray(a, sizeof(a) / sizeof(a[0]));
}
int main()
{
	TestInsertSort();
	return 0;
}

运行结果:

深入了解数据结构第四弹——排序(1)——插入排序-LMLPHP

04-10 06:17