描述:
快速排序可以理解为:分+递归,主要思想是分治。先找一个中间数,将数组划分成左右两个部分,左边的均小于或中间数,右边的均大于中间数;然后递归对左右部分进行递归;递归结束是区间只含一个数或者零个数。
参考:挖坑+填坑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 }