5.快速排序

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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容