排序算法--快速排序

描述:

快速排序可以理解为:分+递归,主要思想是分治。先找一个中间数,将数组划分成左右两个部分,左边的均小于或中间数,右边的均大于中间数;然后递归对左右部分进行递归;递归结束是区间只含一个数或者零个数。

参考:挖坑+填坑http://blog.csdn.net/morewindows/article/details/6684558#reply

 1 #include <iostream>
 2 #include <string>
 3 #include <memory.h>
 4 #include <vector>
 5 using namespace std;
 6 
 7 //递归版本
 8 void quick_sort1(vector<int> &arr,int s,int e)
 9 {
10     if(s < e)
11     {
12         int pos = part_tion(arr,s,e);
13         quick_sort1(arr, s, pos - 1);
14         quick_sort1(arr, pos + 1, e);
15     }
16 }
17 
18 int part_tion(vector<int> &arr,int s,int e)
19 {
20     int tmp = arr[s];
21     int i = s;
22     int j = e;
23     while(i < j)
24     {
25         while(i < j && arr[j] > tmp)
26             --j;
27         if(i < j)
28         {
29             swap(arr[i],arr[j]);
30             ++i;
31         }
32 
33         while(i < j && arr[i] <= tmp)
34             ++i;
35         if(i < j)
36         {
37             swap(arr[i],arr[j]);
38             j--;
39         }
40     }
41     arr[i] = tmp;
42     return i;
43 }
44 
45 int main()
46 {
47 
48     return 0;
49 }
原文地址:https://www.cnblogs.com/cane/p/3861767.html