插入排序是把一个记录插入到已排序的有序序列中, 使整个序列在插入该记录后仍然有序。 插入排序中较简单的一种方法是直接插入排序, 其插入位置的确定方法是将待插入 的记录与有序区中的各记录自右向左依次比较其关键字值的大小。
#include <stdio.h>
#define N 10
void Insert_Sort(int *a, int n);
int main(int argc, char** argv)
{
int i;
int a[N];
printf("请为需排序数组输入数据:\n");
for(i=0; i<N; i++)
{
scanf("%d",&a[i]);
}
Insert_Sort(a,N);
for(i=0; i<N; i++)
{
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
/*
Insert_Sort:插入排序
@a:数组名
@n:数组元素个数
返回值类型: void
*/
void Insert_Sort(int *a, int n)
{
int i, j;
int flag;
//排序趟数
for(i=1; i<n; i++)
{
//存储需要插入的数据
flag = a[i];
j = i-1;
//后移条件
while(flag<a[j] && j>=0)
{
a[j+1] = a[j];
j--;
}
a[j+1] = flag; //插入数据
}
}