插入排序

 1 #define N 10
 2 
 3 #include <iostream>
 4 #include <cstdlib>
 5 #include <algorithm>
 6 #include <vector>
 7 
 8 using namespace std;
 9 
10 void InsertionSort(vector<int> &intvec)
11 {
12     for (int j = 1; j < N; ++j)
13     {
14         int key = intvec[j];
15         int i = j - 1;
16         while (i >= 0 && intvec[i] > key)
17         {
18             int k = i + 1;
19             intvec[k] = intvec[i];
20             --i;
21         }
22         int k = i + 1;
23         intvec.erase(intvec.begin() + k);
24         intvec.insert(intvec.begin() + k, key);
25     }
26 }
27 
28 int main(void)
29 {
30     vector<int> intvec;
31     cout << "Please Input " << N << " IntNum:" << endl;
32     for (int i = 0; i < N; ++i)
33     {
34         int j;
35         cin >> j;
36         intvec.push_back(j);
37     }
38     InsertionSort(intvec);
39     for (auto c : intvec)
40     {
41         cout << c << " ";
42     }
43     cout << endl;
44     system("pause");
45     return 0;
46 }

 

如下图所示:

  ①.整型3拷贝给key

  ②.与整型4做比较小于整型4,于是整型4向后移动,原整型3的前面没有任何元素,将key拷贝到整型3的位置

  ③.整型1拷贝给key

  ④.与整型4做比较小于整型4,于是整型4向后移,又与整型3做比较小于整型3,整型3向后移,原整形3前面没有任何元素,将key拷贝到整型3的位置

  ⑤.整型2拷贝给key

  ⑥.与整型4做比较小于整型4,于是整型4向后移,又与整型3做比较小于整型3,整型3向后移,与整形3前面的整型1做比较大于整型1,结束比较,将key拷贝到原整型3的位置

 

posted @ 2016-08-18 00:11  木卜木卜木卜木卜木卜  阅读(134)  评论(0编辑  收藏  举报