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

QuickSort 快速排序

时间:2019-12-26 09:23:51      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:数列   个数   python实现   sort   rem   优势   move   pre   lse   

# QuickSort 快速排序_Python实现


def quick_sort(li):
    if len(li) < 2:
        return li
    # 选取基准值, 一般选取第一个, 并将其从中剔除

    # mid = li[0]
    # li.remove(mid)
    mid = li.pop(0)

    # 定义左右两个数列
    left, right = [], []

    for i in li:  # 大小判断, 分别放置
        if i > mid:
            right.append(i)
        else:
            left.append(i)
    # 使用迭代, 继续进行拆分比较
    return quick_sort(left) + [mid] + quick_sort(right)


list = [1, 55, 98984, 65, 165, 356, 54, 3, 645, 74, 64, 35]

li = quick_sort(list)
print(li)

  

 

快速排序:

快速排序采用的是分而治之的方法.随便取一个值,
然后把列表中所有的值与之对比, 大的放在一起, 小的放在一起.
然后使用递归, 将分好的列表继续分下去,直到无法再分. 依次返回便是排序好的列表.
快速排序是内部排序中非常不错的选择.

注意点:

因为使用递归, 所以需要在函数开始进行列表判断, 是否满足继续分下去的条件(是不是最起码有两个元素)
取基准值的时候, 可以随便取, 但在取之后需要将基准从列表中移除. 此处使用pop来完成两个操作.
快速排序用了一个遍历, 但是因为有用到递归.
除了使用一个变量外, 还用了两个列表.
快速排序的空间性能并不算优秀.相较于其他算法, 最大的优势在于速度快.

QuickSort 快速排序

标签:数列   个数   python实现   sort   rem   优势   move   pre   lse   

原文地址:https://www.cnblogs.com/jrri/p/12099928.html

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