voidquick_sort(vector<int> &nums, int left, int right){ if (left >= right){ return; } int pivot = nums[left+(right-left)/2]; int i = left - 1; int j = right + 1; while(i < j){ do i++; while(nums[i] < pivot); do j--; while(nums[j] > pivot); if (i < j){ swap(nums[i], nums[j]); } } quick_sort(nums, left, j); quick_sort(nums, j+1, right); }
快速排序(python)
1 2 3 4 5 6 7 8
defquick_sort(nums,left,right): if left>=right: return pivot = nums[left+(right-left)//2] nums_left = [x for x in nums if x < pivot] nums_mid = [x for x in nums if x == pivot] nums_right = [x for x in nums if x > pivot] return quick_sort(nums_left,0,len(nums_left)-1) + nums_mid + quick_sort(nums_right,0,len(nums_right)-1)