首页 > 编程语言 > 详细

插入排序

时间:2016-08-18 01:14:38      阅读:269      评论:0      收藏:0      [点我收藏+]
 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的位置

 

技术分享

插入排序

原文:http://www.cnblogs.com/mubu/p/5779782.html

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