標籤:style blog http color os io
描述:
快速排序可以理解為:分+遞迴,主要思想是分治。先找一個中間數,將數組劃分成左右兩個部分,左邊的均小於或中間數,右邊的均大於中間數;然後遞迴對左右部分進行遞迴;遞迴結束是區間只含一個數或者零個數。
參考:挖坑+填坑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 }