【Python_036】算法 | 快速排序

上回书说到选择排序,本篇博客介绍快速排序
参考书籍:《算法图解》

在介绍选择排序之前,先介绍递归的概念。

递归

递归函数组成部分:

  1. 基线条件(函数不再调用自己,从而避免形成无限循环)
  2. 递归条件(函数调用自己)
def fact(x):
    if x == 1: #基线条件
        return 1
    else:
        return x*fact(x-1) #递归条件
    
fact(5)

快速排序

思路:
  1. 选择数组第一个数为基准(pivot)

  2. 依次将数组中的数与基准比较大小,将整个数组分为比基准小的与比基准大的两组数

  3. 对两组数分别重复上两步操作(递归思想),直到每组数只剩下一个数为止

  4. 将排序后的小组依次拼接起来即成为新的有序数组

代码实现
def quicksort(array:list)->list:
    if len(array)<2:
        return array
    else:
        pivot = array[0]
        less = [i for i in array[1:] if i<=pivot]
        more = [i for i in array[1:] if i>pivot]
        return quicksort(less) + [pivot] + quicksort(more)

quicksort([3,2,1,5,])

'''
[1,2,3,5]
'''

你可能感兴趣的:(Python,算法,python)