/*
* 插入排序的基本思想是:
* 每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。
* 插入排序是稳定的排序方法,时间复杂度为O(n^2)。
*/
#include <iostream>
using namespace std;
void InsertSort(int array[],int n)
{
int i,j,temp;
for(i=1;i<n;i++)//第一个元素默认有序
{
temp=array[i];
for(j=i-1;j>0&&temp<array[j];j--)
{
array[j+1]=array[j];
}
array[j+1]=temp;//找到插入位置
}
}
/*array[0]作为哨兵,不存储元素
好处是不用判断j是否大于0*/
void InsertSort1(int array[],int n)
{
int j;
for(int i=2;i<n;i++)
{
array[0]=array[i];
for(j=i-1;array[0]<array[j];j--)//寻找插入位置
{
array[j+1]=array[j];
}
array[j+1]=array[0];
}
}
int main()
{
int array[10]={10,3,4,1,5,6,7,8,9,0};
InsertSort(array,10);
for(int i=0;i<10;i++)
printf("%d ",array[i]);
return 0;
}
插入排序
最新推荐文章于 2023-09-23 17:47:53 发布