用分治思想结合Python来写快速排序,真!的!很!简!单!
具体过程:
每次取list的第一个元素,把剩下的元素与第一个元素比较,此时生成了两个list,less中存放的就是余下的所有比第一个元素小的list,greater中存放的就是余下的所有比第一个元素大的list。然后循环递归,当基线条件只有一个元素或0个元素时停止,并返回结果。
接下来就是代码实现:
# encoding: utf-8
def quick_sort(arr):
if len(arr) < 2:
return arr
else:
pivot = arr[0]
less = [i for i in arr[1:] if i <= pivot]
greater = [i for i in arr[1:] if i > pivot]
return quick_sort(less) + [pivot] + quick_sort(greater)
if __name__ == "__main__":
arr = [4,10,6,1,9,8,2,5,7,1,3,0]
print(quick_sort(arr))
运行结果:
[0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]