插入排序:
数组或容器中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 */