def quick_sort(nums, left, right):
if left < right:
index = partition(nums, left, right)
quick_sort(nums, left, index-1)
quick_sort(nums, index+1, right)
return nums
def partition(nums, left, right):
key = nums[left]
while left < right:
while left < right and nums[right] >= key:
right -= 1
nums[left] = nums[right]
while left < right and nums[left] <= key:
left += 1
nums[right] = nums[left]
nums[left] = key
return left
if __name__ == "__main__":
num = [23, 46, 99, 2, 0, 8, 11, 18]
sort_num = quick_sort(num,0,len(num)-1)
print(sort_num)
另一种写法
def quick_sort(arr, low, high):
if low >= high: return
left = low
right = high
key = arr[left]
while left < right:
while left < right and arr[left]<key:
left += 1
while left < right and arr[right]>key:
right -= 1
arr[left], arr[right] = arr[right], arr[left]
arr[left] = key
quick_sort(arr, low, left - 1)
quick_sort(arr, left + 1, high)
if __name__ == '__main__':
nums = [23, 46, 99, 2, 0, 8, 11, 18]
quick_sort(nums,0,len(nums)-1)
print(nums)