插入排序

插入排序:
数组或容器中vec[0....n]中,包含了n个待排序的数。输入的各个数字是原地排序的,意即这些数字就是在数组或容器vec在中进行重新排序的,
在任何饿时候,至多只有其中的常数个数字是存储在数组或容器之外的。

#include<iostream>
#include<vector>
using namespace std;

int main()
{
    vector<int> ivec;
    int ival;
    cout << "Enter some numbers(Ctr+Z to end):" << endl;
    while(cin >> ival)        //输入待排数据
        ivec.push_back(ival);
    for(vector<int>::size_type ix = 1; ix != ivec.size(); ++ix)        //从第二个元素开始排序
    {
        int key = ivec[ix];        //待排序的数(也成为关键字)
        int jx = ix - 1; 
        while(jx >= 0 && ivec[jx] > key)        //把关键字插入到前面拍好的容器中,ivec[ix] 插入到ivec[0.....(ix-1)]中。
        {
            ivec[jx+1] = ivec[jx];
            --jx;
        }
        ivec[jx+1] = key;
    }
    for(ix = 0; ix != ivec.size(); ++ix)        //输出排好序的容器元素
        cout << ivec[ix] << "  ";
    cout << endl;
    return 0;
}

/*实例

  7 3 8 6 5 9 8 2 4 1
  
*/
 
原文地址:https://www.cnblogs.com/sanghai/p/2765339.html