首页 > 编程语言 > 详细

插入排序

时间:2016-02-12 15:04:28      阅读:261      评论:0      收藏:0      [点我收藏+]

插入排序是一种简单的排序算法,由于每一个嵌套循环都花费N次迭代,因此插入排序的时间复杂度为O(N^2)。

编码实现并测试:

#include <iostream>
#include <vector>

using namespace std;

template <typename Comparable>
void insertionSort( 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-- )   //通过循环将位置p之前比p大的元素都向右移一格
            a[j] = a[j - 1];
        a[j] = tmp;                                     //最后在适当的位置插入元素值.
    }
}

int main()
{
    cout << "请输入一些数据:" << endl;

    vector<int> vec;
    int temp;

    while ( cin >> temp )
        vec.push_back( temp );

    insertionSort( vec );

    cout << "按降序排列过的数据如下:" << endl;

    vector<int>::iterator iter = vec.begin();
    while( iter != vec.end() )
        cout << *iter++ << endl;

    return 0;
}

 

插入排序

原文:http://www.cnblogs.com/ZRBYYXDM/p/5187045.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!