C语言:数组排序(插入法排序)

时间:2022-03-05 00:47:54

插入法的基本原理是抽出一个数据,在前面数据中寻找相应的位置插入,然后继续下一个数据,直到排序完成

以9、6、15、4、2为例来进行插入法排序


元素[0]

元素[1]

元素[2]

元素[3]

元素[4]

初始值

9

6

15

4

2

第1次

9

第2次

6

9

第3次

6

9

15

第4次

4

6

9

15

结果

2

4

6

9

15

下面我们将使用代码来实现:

#include<stdio.h>
int main()
{
int arr[10]={9,6,15,4,2};
int len=sizeof(arr)/sizeof(arr[0]);
int i=0,temp,pos;//temp来记录插入值
for(i=1;i<len;i++)
{
temp=arr[i];//在下标为i的位置插入值为temp
//用pos记录插入位置的前一个元素的下标
pos=i-1;
while(pos>=0&&temp<arr[pos])//插入元素小于前一个元素
{
arr[pos+1]=arr[pos];//将插入元素的位置和前一个元素对调
pos--;//pos--变为插入位置的前两位1
}
arr[pos+1]=temp;//对调数值
}
for(i=0;i<len;i++)
{
printf("%d ",arr[i]);
}

return 0;
}