Python 排序算法之快速排序

快速排序之分治法三步走

"""
快速排序
分治法(divide and conquer),三步走
1. Partition:选择一个基准(pivot)分割列表为两个子列表,小于基准和大于基准,
    基准数通常选择第一个或最后一个元素
2. 对两个子列表分别快排,调用自身
3. 合并结果,两个子列表和只包含基准数的列表
"""

def quicksort(array):
    len0 = len(array)
    if len0 < 2:
        return array
    pivot_index = len0-1  # 选择最后一个元素作为基准
    pivot = array[pivot_index]
    less_part = [
        i for i in array[:-1] if i  pivot
    ]
    return quicksort(less_part) + [pivot] + quicksort(great_part)

def test_quicksort():
    import random
    ll = list(range(10))
    random.shuffle(ll)
    print(ll)
    print('-----------')
    print(quicksort(ll))
    assert quicksort(ll) == sorted(ll)

test_quicksort()

作者:皎然CEO

链接:https://www.cnblogs.com/jiaoran/p/14584136.html

个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个”推荐”哦(っ•̀ω•́)っ✎⁾⁾!

Original: https://www.cnblogs.com/jiaoran/p/14584136.html
Author: 皎然CEO
Title: Python 排序算法之快速排序

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/606936/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球