直接插入排序
当我们打扑克牌的时候,为了使手中的牌顺序排列,我们平常都会这么做,每抽到一张牌,就会将它直接插入到适当的位置。
例如:我们手上有1、3、4、5这四张牌,而当我们再抽到一个2的时候,我们需要将2插入到1和3之间,这样就能完成手中牌的顺序排列。
1.排序原理
直接插入排序基本操作就是将一个数据插入到已经排序好的有序序列中,从而得到一个新增一个数据的序列
<mark>排序过程</mark>
序列[1 3 4 5 2]从第二个数开始遍历
序列:[1] 判断1<3 不需要插入
序列:[1 3] 判断3<4 不需要插入
序列:[1 3 4] 判断4<5 不需要插入
序列:[1 3 4 5] 判断5>2 需要插入
【依次后移数据,直到1<2,找到插入位置,序列:[1 3 3 4 5],赋值得[1 2 3 4 5]】
排序结束
<mark>图示</mark>
2.源代码:
#include<stdio.h>
#define N 10
void InsertSort(int num[],int len)
{
int i,j,temp;
for(i=1;i<len;i++)
if(num[i]<num[i-1])
{
temp=num[i];
num[i]=num[i-1];
for(j=i-1;num[j]>temp;j--)
num[j+1]=num[j];
num[j+1]=temp;
}
}
int main()
{
int num[N]={9,8,7,6,5,4,3,2,1,0};
InsertSort(num,N);
for(int i=1;i<N;i++)
printf("%d ",num[i]);
printf("\n");
return 0;
}