zoukankan      html  css  js  c++  java
  • QuickSort 快速排序

    # 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来完成两个操作.
    快速排序用了一个遍历, 但是因为有用到递归.
    除了使用一个变量外, 还用了两个列表.
    快速排序的空间性能并不算优秀.相较于其他算法, 最大的优势在于速度快.

  • 相关阅读:
    spring四种依赖注入方式
    java利用反射来调用一个类的私有方法
    IOC和AOP的基本概念
    开业大吉
    1752年9月奇怪的日历
    找到一个软件测试的学习网址,保留一下
    学习任务
    操作系统的第一次作业
    答题
    第四章读后感
  • 原文地址:https://www.cnblogs.com/jrri/p/12099928.html
Copyright © 2011-2022 走看看