详细介绍,在本博客的数据结构栏目里有,不过是java版。
1、直接插入排序:
void insert_sort(int a[],int num)
{
for(int i=1;i<num;i++)
{
int m = a[i];
int j = i;
while(a[j-1] > m && j > 0)
{
a[j] = a[j-1];
j --;
}
a[j] = m;
}
}
2、折半插入排序:
void BInsert_Sort(int a[],int num)
{
for(int i=1;i<num;i++)
{
int m = a[i];
int low = 0;
int high = i-1;
while(low<=high)
{
int middle = (low+high)/2;
if(a[middle] > m)
{
high = middle-1;
}
else
{
low = middle +1;
}
}
for(int j=i;j > high;j--)
{
a[j] = a[j-1];
}
a[high+1] = m;
}
}
main函数:
void main()
{
int a[] = {57,68,59,52,72,28,96,33,24};
int num = sizeof(a)/sizeof(a[0]);
//insert_sort(a,num);
BInsert_Sort(a,num);
for(int i=0;i<num;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}