快速排序
void quicksort(vector&arr, int left, int right){ if(left < right){ int pivot = arr[left]; int low = left, high = right; while(low < high){ while(arr[high] >= pivot && low < high ){ high--; } arr[low] = arr[high]; //因为pivot选在了最左侧,需先从右处理。 while(arr[low] <= pivot && low < high ){ low++; } arr[high] = arr[low]; } arr[low] = pivot; //最后落脚很清晰。 quicksort(arr, left, low - 1); quicksort(arr, low + 1, right); } } int main() { vector test{2,5,8,1,9,4,6}; int n = test.size(); quicksort(test, 0, n - 1); for(int i = 0 ; i < n ; ++i){ cout << test[i] << " "; } return 0; }



