丰富自己的代码库-直接插入排序
直接插入排序,就是把一个无序集合每次抽出一个集合插入到有序集合中,如此循环一直到无序集合为空。
算法的关键在于插入,首先一个数据跟有序集合的最后一个比较若小于(或大于)则放在最后一个位置,若不满足则位置前移,如果是数组则数据位置要不断后移,以腾出位置来放新数据,直到找到一个满足前一个数据小于(或大于)待插入数据
的位置,或到达数据的第一个位置,则将数据放入这个位置。依次循环上述操作直至无序集合为空,对于数组这样排序复杂度是O(n),但是对于链表则是常数阶
template<class T> void InsertSort(T* a,int size) { for(int i=1;i<size;i++) { if(a[i]<a[i-1]) { int j =0; for(j=i-1;j>=0&&a[j]>a[i];j--) { a[j+1]=a[j]; } a[j]=a[i]; } } }