1. 算法:
插入排序(insertion sort)是最简单的排序算法之一。插入排序由N-1趟排序组成,对于P=1到P=N-1趟,插入排序保证从位置0到位置P上的元素为已排序状态。
下图显示一个简单的数组([ 34,8,64,51,32,21])在每一趟插入排序后的情况:
代码块:
template<typename T>
void insert_sort(vector<T>&a){
int p,x,j;
for(p=1; p<a.size(); p++){
x=a[p];
for(j=p; j>0; j--){
if(a[j-1]>x)
a[j]=a[j-1];
else
break;
}
a[j]=x;
}
}
2.分析:
由于嵌套循环的每一次都花费N次迭代,因此插入排序为O(N^2)