# 快速排序
def partition(nums, low, high):
key = nums[low]
while low < high:
while nums[high] >= key and low < high:
high -= 1
nums[low] = nums[high]
while nums[low] < key and low < high:
low += 1
nums[high] = nums[low]
nums[low] = key
return low
#非递归实现
def quick_sort(nums):
stack = [(0, len(nums)-1)]
while stack:
low, high = stack.pop()
if low < high:
position = partition(nums, low, high)
stack.append((low, position-1))
stack.append((position+1, high))
return nums
# 递归实现
def quick_sort_recursion(nums, start, end):
if start >= end:
return
position = partition(nums, start, end)
quick_sort(nums, start, position-1)
quick_sort(nums, position+1, end)