插入排序是最简单的排序之一,有N-1趟排序组成,最差时间复杂度为O(n^2),最优时间复杂度为O(n),平均时间复杂度为O(n2)。
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
template <class Comparable>
void insertSort(vector<Comparable> &data)
{
int j = 1;
int size = data.size();
for(int i=1; i<size; ++i)
{
Comparable temp = data[i];
for(j=i; j>0 && temp<data[j-1]; --j)
{
data[j] = data[j-1];
}
data[j] = temp;
}
}
int main(void)
{
int ary[] = {1,7,2,6,3,5,4,8,9,0};
int len = sizeof(ary)/sizeof(int);
vector<int> v(ary, ary+len);
insertSort(v);
copy(v.begin(), v.end(), ostream_iterator<int>(cout, " "));
cout << endl;
return 0;
}