快速排序
void quicksort(vector<int>&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<int>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;
}