经过上一章对分而治之思想和递归的思考,这里我正式开始来研究快速排序
快速排序有非常明显的分而治之的思想在其中,首先我们来对一个列表进行排序,对排序算法来说,最简单的列表是怎么样的呢?那就是根本不需要排序的数组
如果一个列表是空的或者是只有一个数,根本不用排序
def quicksort(array):
if len(array)<2:
return array
只有两个元素的也很简单,直接进行比较就行了
那么有三个元素呢,当然我们依然可以使用循环进行比较
def sort(array):
for i in range(len(array)):
for j in range(len(array) - 1):
if array[j] > array[j + 1]:
array[j], array[j + 1] = array[j + 1], array[j]
return array
当然,这样计算的速度是非常慢的,在计算长数据的时候由于要遍历每一个数而导致效率地下,所以现在我们使用快速排序来解决这个问题
def quicksort(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]
print(array)
print(less)
print(greater)
return quicksort(less)+[pivot]+quicksort(greater)
我先把代码贴出来