1.介绍:
快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列
2.快速排序示意图:
快速排序
3.代码实现
#快速排序
def sorted(sortlist):
if len(sortlist) < 2: # 左右列表递归到只有一个数就不用排序了
return sortlist
middle = sortlist[len(sortlist)//2] # 这里是把中间值直接取到 return的时候就可以直接用
leftlist = []
rightlist = []
for i in range(len(sortlist)): # 大于middle放rightlist 小于middle放leftlist
if sortlist[i]>middle:
rightlist.append(sortlist[i])
elif middle>sortlist[i]:
leftlist.append(sortlist[i])
# 这里是递归的精华所在,首先只有左右列表需要递归所以是sorted(leftlist)、sorted(rightlist),其次我们每次递归的middle值都是已经在本次递归的时候就已经取到
# 如果不这么做也不行,就无法取到middle值,因为sortlist一直在变化,
return sorted(leftlist) + [middle] + sorted(rightlist)
l= [2,10,8,22,12,5,1,28,21,11]
# l = [-9,78,0,23,-567,70]
res = sorted(l)
print(res)