直接插入排序也是一种较简单的排序算法,原理就是从第二个数开始抽出一个数,与前面的数进行比较,在合适的地方插入,形成有序数列,随着被抽出的数据的右移,整个数组将会被排序。代码如下:
#include <stdio.h>
void insort(int num[],int n);
int main()
{
int n=0;
scanf("%d",&n);//输入要排序的数的数量
int num[n+1];
int a=0;
for(a=1;a<=n;a++)
scanf("%d",&num[a]);//输入具体数据
insort(num,n);//调用函数进行排序
for(a=1;a<=n;a++)
printf("%d ",num[a]);//输出排序后结果
printf("\n");
return 0;
}
void insort(int num[],int n)
{
int i=0,j=0;
for(i=2;i<=n;i++)//数组下标从2开始,num[0]做监视哨,从一开始的话只有一个数据没有可比性
{
num[0]=num[i];//给监视哨赋值
j=i-1; //从这个位置开始往前比较
while(num[0]<num[j])
{
num[j+1]=num[j];//较大的数据右移
j--; //移向左边一个未比较的数开始比较
}
num[j+1]=num[0];//在确定的位置插入num[i]
}
}