轉載於:http://blog.csdn.net/morewindows/article/details/6684558ios
該方法的基本思想是:windows
1.先從數列中取出一個數做爲基準數。ui
2.分區過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。spa
3.再對左右區間重複第二步,直到各區間只有一個數。.net
雖然快速排序稱爲分治法,但分治法這三個字顯然沒法很好的歸納快速排序的所有步驟。所以個人對快速排序做了進一步的說明:挖坑填數+分治法code
#include<cstdio> #include<cstdlib> #include<iostream> using namespace std; void quick_sort(int s[], int l, int r) { if(l<r) { int i = l, j = r; int x = s[i]; while(i<j) { while(s[j]<=x&&i<j) j--; if(i<j) s[i++]=s[j]; while(s[i]>x&&i<j) i++; if(i<j) s[j--]=s[i]; } s[i]=x; quick_sort(s,l,i-1); quick_sort(s,i+1,r); } } int main() { int n = 5; int a[n]; for(int i = 0; i < n; i++) { scanf("%d", &a[i]); } quick_sort(a,0,n-1); for(int i=0; i<n; i++) printf("%d ", a[i]); free(a); return 0; }