码迷,mamicode.com
首页 > 编程语言 > 详细

插入排序

时间:2016-01-23 22:49:21      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:

模块1:线性扫描,试图将每个a[i]插入到前面的有序序列中。

模块2:[0, i]的无序区间进行扫描,找出插入的位置,该位置使得插入的瞬间:[0, k]区间有序,而[k+1, i]区间无序,所以插入点在k+1。

#include <iostream>
#include <vector>
using namespace std;
template <typename T>void insertionSort(vector<T>& a);
int main(){
    vector<int> a;
    a.push_back(2);
    a.push_back(3);
    a.push_back(1);
    insertionSort(a);
    for (auto x : a)
        cout << x << endl;
    return 0;
}
template <typename T> void insertionSort(vector<T>& a){
    for(int i = 1; i < a.size(); i++){
        T key = a[i];
        int j = i - 1;
        while( j >= 0 && key < a[j]){
            a[j+1] = a[j];
            j--;
        }
        a[j+1] = key;
    }
}

 

插入排序

标签:

原文地址:http://www.cnblogs.com/celahir/p/5154052.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!