Java教程

快速排序

本文主要是介绍快速排序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
# 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)
这篇关于快速排序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!