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

八大排序算法

时间:2019-03-27 10:41:53      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:alt   pause   targe   swa   快速排序   算法   代码   lan   行数据   

快速排序算法

快速排序的思想是这样的,如果要对数组区间 [p, r] 的数据进行排序,我们先选择其中任意一个数据作为 pivot(分支点),一般为区间最后一个元素。然后遍历数组,将小于 pivot 的数据放到左边,将大于 pivot 的数据放到右边。接着,我们再递归对左右两边的数据进行排序,直到区间缩小为 1 ,说明所有的数据都排好了序。
技术图片

 快速排序的分区过程如下所示,从左到右依次遍历数组,如遇到小于 pivot 的元素,则进行数据交换 ,否则继续往前进行,最后再放置 pivot。

 技术图片

 代码1:

 1 #include <iostream>
 2 #include <vector>
 3 using namespace std;
 4 
 5 void Quick_Sort(vector<int> &data, int left, int right)
 6 {
 7     if (left < right)
 8     {
 9         int i = left, j = left;
10         int pivot = data[right];
11 
12         for (j = left; j < right; j++)
13         {
14             if (data[j] < pivot)
15             {
16                 swap(data[i], data[j]);
17                     i++;
18             }
19         }
20         data[j] = data[i];
21         data[i] = pivot;
22         Quick_Sort(data, left, i - 1);
23         Quick_Sort(data, i + 1, right);
24     }
25 }
26 
27 int main()
28 {
29     vector<int> vec;
30     int n;
31     cin >> n;
32     for (int i = 0; i < n; i++)
33     {
34         int a;
35         cin >> a;
36         vec.push_back(a);
37     }
38     cout << "排序前:";
39     for (auto c : vec)
40         cout << c << " ";
41     cout << endl;
42     Quick_Sort(vec, 0, vec.size() - 1);
43     cout << "排序后:";
44     for (auto c: vec)
45         cout << c << " ";
46     system("pause");
47     return 0;
48 }

 

 

参考资料

八大排序算法

标签:alt   pause   targe   swa   快速排序   算法   代码   lan   行数据   

原文地址:https://www.cnblogs.com/sunbines/p/10605546.html

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