1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
def partition(nums: list, left: int, right: int) -> int: targt = nums[left] mid, fast = left, right while mid != fast: if nums[fast] > targt and fast > mid: fast -= 1 elif nums[fast] < targt and fast < mid: fast += 1 else: nums[fast], nums[mid] = nums[mid], nums[fast] mid, fast = fast, mid if fast >= mid: fast -= 1 elif fast < mid: fast += 1 return mid
def quick_sort(nums, left, right): if not nums: return nums mid = partition(nums, left, right) if left < mid - 1: quick_sort(nums, left, mid - 1) if right > mid + 1: quick_sort(nums, mid + 1, right) return nums
nums = [1, 5, 4, 9, 3, 55, 64, 25] print(quick_sort(0, len(nums) - 1, nums))
|