插入排序(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");
}

 

posted @ 2016-05-08 19:14  19Q3  阅读(496)  评论(0编辑  收藏  举报