直接插入排序

一.介绍.

其基本思想为数据元素被已经放入一个已经排好的有序数组中,现插入一个元素进入该数组,按顺序(即大小关系)放进适当位置,并且其后面的元素都向后移动移位。

如图:

对于上述问题:

代码如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include 
#define SIZE 8//便于改变
int main()
{
	int arr[SIZE] = { 0 };
	for (int i = 0; i < SIZE; i++)
	{
		scanf("%d", &arr[i]);
	}
	//直接插入排序
	for (int i = 1; i < SIZE; i++)
	{
		int m = *(arr + i);//将arr[i]中的值赋给m
		//如果i>i-1那么交换
		int j = i - 1;
		while (j >= 0 && m > *(arr + j))
		{
			//交换
			*(arr + j + 1) = *(arr + j);
			j--;

		}
		*(arr + j + 1) = m;
	}
	//输出
	for (int i = 0; i < SIZE; i++)
	{
		printf("%d ", *(arr + i));
	}
	return 0;
}

你可能感兴趣的:(数据结构)