插入排序(C++)
插入排序(C++)
插入排序:
写这篇博文是为了增加对数据结构和算法的理解,同事增加编程的基本功。
当要对如下数据进行排序:
2,8,5,4,6,7,1
2,8,5,4,6,7,1 采用插入排序是的步骤:
2,8,5,4,6,7,1 取元素8和2对比,8比2大,不用移动
2,8,5,4,6,7,1 取元素5,和8比较
2,5,8,4,6,7,1 由于8比5大,将8向后移动,将5反正原来8的位置,5>3不再移动
.
.
.
1,2,4,5,6,7,8
即每取一次元素都与前一个元素对比,由于每一个嵌套循环都花费N次迭代,所以时间复杂度为O(N^2)。
代码实现:
#include<iostream> #include<vector> using namespace std; /** *插入排序 */ template <typename Comparable> void insertsort(vector<Comparable> &a) { int j; for (int p = 1;p < a.size();p++) { Comparable tmp = a[p]; for (j = p;j > 0 && tmp < a[j - 1];j--) { a[j] = a[j - 1]; } a[j] = tmp; } } int main() { vector<int> a = { 3,4,5,8,7,1 }; insertsort(a); for (auto c : a) { cout << c<<endl; } system("pause"); }
-------------------------------------------------------------------转账请注明出处。
--------------------------------------------------------------------如有好的建议或错误,请指出。