插入排序:insert_sort.c
void insert_sort(int a[],int n)
{
int i,pos,val;
for(i=0;i<n;i++)
{
val=a[i];
for(pos=i-1;pos>=0;pos--)
{
if(val<a[pos])
{
a[pos+1]=a[pos];
}else
{
break;
}
}
a[pos+1]=val;
}
}
完整例子:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#define N 10
int main()
{// 插入排序!从键盘上每输入一个数a[i],就对其排序,且a[0]->a[i-1]已有序 。
int a[N];
int i,pos;
int val;
//核心代码
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
val=a[i]; //注意要用val保存a[i]
for(pos=i-1;pos>=0;pos--)
{
if(val<a[pos])
{
a[pos+1]=a[pos];
}else
{
break;
}
}
a[pos+1]=val; // 把此时的a[i]要插入到数组中
}
//显示数组
for(i=0;i<N;i++)
{
printf("%-3d",a[i]);
}
printf("\n");
system("pause");
}