码迷,mamicode.com
首页 > 编程语言 > 详细

Python 排序算法之快速排序

时间:2021-03-29 12:03:54      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:pivot   治法   调用   自身   sse   int   quic   shuffle   排序算法   

"""
快速排序
分治法(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
    ]
    great_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()

Python 排序算法之快速排序

标签:pivot   治法   调用   自身   sse   int   quic   shuffle   排序算法   

原文地址:https://www.cnblogs.com/jiaoran/p/14584136.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!