快速排序

# quick_sort 代码实现
# TODO:原地修改
def partition(arr, left, right):

pivot = arr[left] # 定义一个基准,取当前列表的第一个元素为基准,将这个pivot和其他元素比较
idx = left # idx 其实是在记录当前列表下,有(idx - left)个元素小于pivot,
for i in range(left+1, right+1): # 遍历当前列表
if arr[i] <= pivot: # 一旦发现元素小于pivot, idx+=1, 并且将二者位置互换
idx += 1
arr[idx], arr[i] = arr[i], arr[idx]
arr[left], arr[idx] = arr[idx], arr[left]

return idx

def quick_sort_utils(arr, left, right):

if right <= left: # 确认递归函数的终止条件
return
sep = partition(arr, left, right)
quick_sort_utils(arr, left, sep-1)
quick_sort_utils(arr, sep+1, right)

def quick_sort(arr):

quick_sort_utils(arr, 0, len(arr)-1)

# 测试数据
if __name__ == '__main__':
import random
random.seed(1)
arr = [random.randint(0, 100) for _ in range(10)]
print("原始数据:", arr)
quick_sort(arr)
print("快速排序结果:", arr)
posted @ 2021-10-27 02:30  算是一个初学者  阅读(33)  评论(0编辑  收藏  举报