直接插入排序算法的思想:
我们要把一个数插入到已经有序的数据中,选取待排序的无序数据中的第一个数据,看做为一个已经有序的数列,然后依次将其余无序数据插入到这个有序的数列中。
#include<iostream>
using namespace std;
struct Greater
{
bool operator()(int x,int y)
{
return x>y;
}
};
struct Less
{
bool operator()(int x,int y)
{
return x<y;
}
};
template<class Compare=Greater>
void insertsort(int* data,size_t size)
{
Compare com;
int end;
int tmp;
for(size_t index=0;index<size;index++)
{
end=index;
tmp=data[end+1];
while(end>=0&&com(tmp,data[end]))
{
data[end+1]=data[end];
end--;
}
data[end+1]=tmp;
}
}
int main()
{
int data[]={2,5,4,9,3,6,8,7,1,0};
insertsort<Less>(data,sizeof(data)/sizeof(data[0]));
return 0;
}