Python快速排序的实现

一. 首先介绍快速排序实现的原理

最简单的数组肯定就是只有一个元素的数据组,例如a = [2],这个时候列表的长度为1,因此根本无需进行排序,可以直接进行返回.此时列表长度为1的条件将被定义为基线条件,即递归函数的出口。

因此,此时如果使用递归来进行排序的话,只要根据基准将待排序的列表逐步切割。把列表变成只有一个元素的列表,然后返回即可。

二. 基本思路

此时设定需要进行比较大小的基准数字b[0],将列表中所有的数字和b[0]进行比较,将大的数字放在基准数字的后面,小的数字放在基准数字的前面。

1. 长度为 2 的列表

这里随机给定一个列表,例如 b = [9,2]

  • 此时列表 b中的数字除了9以外就只有一个比9小的数字2,这个时候只需要将2放到9的前面:[2] —[9]

2.长度为 3 的列表

继续随机给定一个列表 ,例如c = [6,4,9]

  • 现在给定比较的数值基准c[0],即6,遍历c[1:],然后将小于6的放到6的前面,然后将比6大的数字放到6的后面。
  • 即[4]—[6]—[9]

三. 实现的代码

  • 定义lessgreater,将小于基准值的array[0]的数值放在less列表里面,大于基准值的array[0]的数值放在greater列表里面。
  • 返回的是quickSort(less) + [pivot] + quickSort(greater),将分好的数值继续进行递归。
def quickSorst(array):
    if len(array) < 2:
        return array
    else:
        pivot = array[0]
        less = [i for i in array[1:] if i <= pivot]
        greater = [i for i in array[1:] if i > pivot]
        return quickSorst(less) + [pivot] + quickSorst(greater)

运行:

a = [9,8,7,6,444,31,3]
b = quickSorst(a)
print(b)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章