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

【插入排序】直接插入排序

时间:2015-01-04 18:33:25      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:

思想:顺序地把待排序的数据元素按其关键字值的大小插入到已排序数据元素子集合的适当位置。子集合的数据元素个数从只有一个数据元素开始逐次增大。当子集合大小最终和集合大小相同时排序完毕。

算法分析:直接插入排序的时间复杂度为O(n2),空间效率为O(1),是一种稳定的排序方法

 1 #include <iostream>
 2 #include <vector>
 3 using namespace std;
 4 
 5 void InsertSort(vector<int> &vec)
 6 {
 7     vector<int>::size_type i, j;
 8     int key;
 9     if (vec.size() == 0)
10     {
11         return;
12     }
13 
14     for (i = 1; i < vec.size(); i++)
15     {
16         j = i - 1;
17         key = vec[i];
18         while (j >= 0 && j < i && vec[j] > key)
19         {
20             vec[j + 1] = vec[j];
21             j--;                                //j为unsigned,j--可能为大正数
22         }
23         vec[j + 1] = key;
24     }
25 
26     return;
27 }
28 
29 int main(void)
30 {
31     vector<int> vec;
32     vector<int>::iterator iter;
33     int tmp;
34 
35     while (cin >> tmp)
36     {
37         vec.push_back(tmp);
38     }
39 
40     InsertSort(vec);
41 
42     for (iter = vec.begin(); iter != vec.end(); iter++)
43     {
44         cout << *iter << " ";
45     }
46     cout << endl;
47 
48     return 0;
49 }

【插入排序】直接插入排序

标签:

原文地址:http://www.cnblogs.com/mengwang024/p/4201351.html

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