#include <iostream> using namespace std; //快速排序 /** 一句箴言:若是要排序數組中下標從 l 到 r 之間的一組數據,咱們選擇 l 到 r 之間的任意一個數據[通常選擇第一個]做爲 pivot(分區點)。 方法:分區是關鍵,選定第一個爲分區值,以j爲最終分區位置索引,遍歷值,若小於分區值,則j索引向後移動,並交換值 **/ int _partition(int arr[], int l ,int r){ int temp = arr[l]; int j = l; for(int i = l + 1 ; i<=r; i++){ if (arr[i] < temp){ j++; swap(arr[j],arr[i]); } } swap(arr[l], arr[j]); return j; } void quickSort(int arr[], int l, int r) { if (l >= r) { return; } int p = _partition(arr, l ,r);//獲取分區點 quickSort(arr, l, p-1); quickSort(arr, p+1, r); } int main() { int arr[10] = {10,9,8,7,13,5,4,3,2,1}; quickSort(arr, 0, 10 -1); for(int i =0; i< 10; i++) { cout << arr[i] << " "; } return 0; }