/**********************************************************************
* Copyright (c)2015,WK Studios
* Filename:
* Compiler: GCC,VS,VC6.0 win32
* Author:WK
* Time: 2015 4 20
************************************************************************/
#include<stdio.h>
#include<assert.h>
void Insert_Sort(int *a,int n)
{
assert(a!=NULL&&n>0);
for(int i=1;i<n;i++)//从第二个数字开始与第一个比较
{
int temp=a[i];
int j=i;
while(j>0 && a[j-1]>temp)//这里如果是a[j-1]>=temp就会多移一次,这种情况被a[j-1]>temp覆盖了
{
a[j]=a[j-1];//在尾部进行数据后移
j--;
}//腾出位置准备插入
a[j]=temp;//插入数据放入位置
}
}
int main()
{
int a[]={1,5,4,7,9,8,3,2,6};
Insert_Sort(a,sizeof(a)/sizeof(a[0]));
for(int i=0;i<sizeof(a)/sizeof(a[0]);i++)
{
printf("%d ",a[i]);
}
return 0;
}
基本的排序算法之——插入排序法(稳定)(对于固定的空间数组或者顺序表)
最新推荐文章于 2024-06-24 17:01:15 发布