1、快速排序

一 、算法介绍

  排序算法(Sorting algorithm)是计算机科学最古老的、最基本的算法之一。其中‘快速排序’(Quicksort)使用得最广泛,速度也较快,它是图灵奖得主托尼*霍尔于1960时提出来的。

二、算法原理

  1 在数列之中、选择一个元素作为“”基础“”(pivot)或者叫比较值;

  2 数列中所有元素都和这个基准值进行比较,如果比基准值小就移到基准的左边,如果比基准值大就移到基准值得右边;

  3 以基准值左右两边的子列作为新数据,不断重复第一步和第二部,直到所有子集只剩下一个元素为止。

 

三、代码实现

def quick_sort(arr):
    if len(arr) < 2:
        return arr
    mid = arr[len(arr)//2]
    left,right = [], []
    arr.remove(mid)
    for item in arr:
        if item >= mid:
            right.append(item)
        else:
            left.append(item)
    return quick_sort(left) + [mid] + quick_sort(right)

if __name__ == "__main__":
    arr = [3, 44, 5, 6, 55, 100, 4, 7, 102, 88,1,88,7]
    print quick_sort(arr)

四、算法分析

  1 稳定性:快速排序是一种不稳定排序,当基准值前后都存在于基准值相同的元素,那么相同值就会被放在一边,这样就打乱了之前的相对顺序。

  2 比较性:因为排序时元素之间需要比较,所以是比较排序。

  3 时间复杂度:快速排序的时间复杂度为O(nlogn)

  4 空间复杂度,排序时需要另外申请控制,并且随着数列规模增大而增大,其复杂度为O(nlogn)

  

posted @ 2019-03-29 17:20  会开车的好厨师  阅读(83)  评论(0)    收藏  举报