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

    像归并排序一样,快速排序也使用分治模式(因此也是用递归)

    1.1快排与归并的区别:

    快速排序按照原址工作,快速排序渐进运行时间介于最坏情况和平均情况之间。尤其是快排的最坏运行时间是θ(n^2), 但是他的平均情况下的运行时间要更好一些。
    快速排序也有好的常数因子(比归并排序要好一点),并且它通常是实践中的一个好的排序算法。

    1.2流程:

    1.3程序实现:

     1 def quickSort(arr):
     2     left = []
     3     pivotList = []
     4     right = []
     5     if len(arr) <= 1:
     6         return arr
     7     else:
     8         pivot = arr[0]      #将第一个值做为基准
     9         for i in arr:
    10             if i < pivot:
    11                 left.append(i)
    12             elif i > pivot:
    13                 right.append(i)
    14             else:
    15                 pivotList.append(i)
    16 
    17         left = quickSort(left)      #得到第一轮分组之后,继续将分组进行下去。
    18         right = quickSort(right)
    19 
    20         return left + pivotList + right

    还有一句话的版本:
    qs = lambda xs : ( (len(xs) <= 1 and [xs]) or [ qs( [x for x in xs[1:] if x < xs[0]] ) + [xs[0]] + qs( [x for x in xs[1:] if x >= xs[0]] ) ] )[0]
  • 相关阅读:
    HTML5表单元素的学习
    微博账号注册
    微博三方登陆流程
    Vue发送短信逻辑
    celery异步发送短信
    celery
    celery
    jwt安装配置与原理
    图片验证
    Vue组件
  • 原文地址:https://www.cnblogs.com/zenan/p/8743449.html
Copyright © 2011-2022 走看看