# 快速排序
def quickSort(arr):
if len(arr) <= 1:
return arr
# 选定基准值
pivot = arr[len(arr) // 2]
# 存比基准值小的数字
left = [x for x in arr if x < pivot]
# 存放基准值的列表
middle = [x for x in arr if x == pivot]
# 存比基准值大的数字
right = [x for x in arr if x > pivot]
# 对除了存基准值的列表进行递归(为什么要用一个单独的列表去存基准值? 因为列表之间可以用+去拼接)
return quickSort(left) + middle + quickSort(right)
if __name__ == '__main__':
arr = [2, 3, 1, 5, 6, 4, 8, 7, 9]
print(quickSort(arr))
##快速排序是根据冒泡排序演进而来,效率更高,但由于快排中存在基准值选定(可能会选到最大最小值,所以快排的时间复杂度是不确定的,最好时nlogn,最差时n*2),所以快排是不稳定的
##思想就是,在序列中任取一个数作为基准值,然后再跟其它值进行一一比对,比基准值大的用一个列表存放,比基准值小的用另一个列表存放,基准值单独用一个列表存,只要基准值不是最值,那么第一轮比对,三个列表均存放了一定数据,然后通过递归的方式去对除了存放基准值的其它两个列表即可,而递归的出口就是,当列表中的元素个数小于等于1时,就返回该列表,具体代码见上!!!