| 12
 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)
 
 |