直接插入排序
直接插入排序是最简单的排序方法,它的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增一的有序表。
基本思想
每一步将一个待排序的对象,按其关键码大小,插入到前面已经排好序的一组对象的适当位置上,直到对象全部插入为止。
图示
代码实现
#include <stdio.h>
int a[101]={0},n;//定义全局变量,这两个变量需要在子函数中使用
void insertsort()
{
int k,i,j,mid;
for(i=2; i<=n; i++)
{
if(a[i]<a[i-1])
{
a[0]=a[i];
for(j=i-1; a[0]<a[j]; j--)
{
a[j+1]=a[j];
}
a[j+1]=a[0];
}
}
}
int main()
{
int i,j,t;
//读入数据
printf("请输入需要排序数个数:\n");
scanf("%d",&n);
for(i=1; i<=n; i++)
scanf("%d",&a[i]);
insertsort(); //快速排序调用
//输出排序后的结果
for(i=1; i<=n; i++)
printf("%d ",a[i]);
getchar();
getchar();
return 0;
}