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]
  • 相关阅读:
    NYOJ 205
    NYOJ 187
    NYOJ 105
    NUOJ 88
    NYOJ 70
    LL(1)算法
    MATLAB的一些基础知识
    Ubuntu raid5+lvm实验
    空间滤波
    认识weblogic的各个机构
  • 原文地址:https://www.cnblogs.com/zenan/p/8743449.html
Copyright © 2011-2022 走看看