1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| """" 对于快速排序, 若在nums[lo..hi]排序,我们先找一个分界点p, 通过交换元素使得 nums[lo..p-1]都要小于等于nums[p], 且nums[p+1..hi]都大于nums[p], 然后递归nums[lo..p-1]和nums[p+1..hi]中寻找新的分界点 """ def sort(nums: list, lo: int, hi: int): if lo>= hi: return p = partition(nums, lo, hi) sort(nums, lo, p-1) sort(nums, p+1, hi)
def partition(arr, low, high): i = (low - 1) pivot = arr[high]
for j in range(low, high): if arr[j] <= pivot: i = i + 1 arr[i], arr[j] = arr[j], arr[i] arr[i + 1], arr[high] = arr[high], arr[i + 1] return (i + 1)
|