分治算法应用--快速排序

发布时间:2020-07-13 21:34:21 作者:calilyly
来源:网络 阅读:423
#快速排序

#学过c的就知道了,这里的lst相当于是数组

#分治的一个思想,把lst切割成小段,在小段上进行操作,然后各小段的组合结果即为整个lst的结果

def FastSort(lst,start,end,desc=False):

    right = start

    left = end

    store = lst[right]#这里lst[0]的作用只是中间值存储

    while right < left:#满足条件下,以lst[0]为分界线

        while right < left and store < lst[left]:#找到左边比lst[0]小的第一个数

            left = left - 1#注意下标

        if right < left:

            lst[right] = lst[left]#并赋值给lst[right]

            right = right +1#注意下标

        while right < left and store >= lst[right]:#找到右边比lst[0]大的第一个数

            right = right + 1#注意下标

        if right < left:

            lst[left] = lst[right]#并赋值给lst[left]

            left = left - 1#注意下标

    lst[right] = store

    print(lst)#测试

    if start < right:#满足条件下,将lst一分为二,每一段执行上面代码,递归实现

        FastSort(lst,start,left-1)

    if end > left:

        FastSort(lst,left+1,end)

    if desc:

        print(lst[::-1])

    else:

        print(lst)
if __name__ == ' __main__':

    lst = [0,0,0,0,0,23,2,0,1,2,67,2,45,9,4,78,4,5]#前几次的000000已经是最小的了

    FastSort(lst,0,len(lst)-1,desc=True)
测试结果: 
  
[0, 0, 0, 0, 2, 23, 1, 2, 67, 2, 45, 9, 4, 78, 4, 5]

[0, 0, 0, 0, 2, 23, 1, 2, 67, 2, 45, 9, 4, 78, 4, 5]

[0, 0, 0, 0, 2, 23, 1, 2, 67, 2, 45, 9, 4, 78, 4, 5]

[0, 0, 0, 0, 2, 23, 1, 2, 67, 2, 45, 9, 4, 78, 4, 5]

[0, 0, 0, 0, 2, 23, 1, 2, 67, 2, 45, 9, 4, 78, 4, 5]

[0, 0, 0, 0, 2, 23, 1, 2, 67, 2, 45, 9, 4, 78, 4, 5]

[0, 0, 0, 0, 2, 23, 1, 2, 67, 2, 45, 9, 4, 78, 4, 5]

[0, 0, 0, 0, 2, 2, 1, 2, 67, 23, 45, 9, 4, 78, 4, 5]

[0, 0, 0, 0, 1, 2, 2, 2, 67, 23, 45, 9, 4, 78, 4, 5]

[0, 0, 0, 0, 1, 2, 2, 2, 67, 23, 45, 9, 4, 78, 4, 5]

[0, 0, 0, 0, 1, 2, 2, 2, 67, 23, 45, 9, 4, 78, 4, 5]

[0, 0, 0, 0, 1, 2, 2, 2, 67, 23, 45, 9, 4, 78, 4, 5]

[0, 0, 0, 0, 1, 2, 2, 2, 67, 23, 45, 9, 4, 78, 4, 5]

[0, 0, 0, 0, 1, 2, 2, 2, 67, 23, 45, 9, 4, 78, 4, 5]

[0, 0, 0, 0, 1, 2, 2, 2, 5, 23, 45, 9, 4, 4, 67, 78]

[0, 0, 0, 0, 1, 2, 2, 2, 4, 4, 5, 9, 45, 23, 67, 78]

[0, 0, 0, 0, 1, 2, 2, 2, 4, 4, 5, 9, 45, 23, 67, 78]

[0, 0, 0, 0, 1, 2, 2, 2, 4, 4, 5, 9, 45, 23, 67, 78]

[0, 0, 0, 0, 1, 2, 2, 2, 4, 4, 5, 9, 45, 23, 67, 78]

[0, 0, 0, 0, 1, 2, 2, 2, 4, 4, 5, 9, 45, 23, 67, 78]

[0, 0, 0, 0, 1, 2, 2, 2, 4, 4, 5, 9, 45, 23, 67, 78]

[0, 0, 0, 0, 1, 2, 2, 2, 4, 4, 5, 9, 23, 45, 67, 78]

[0, 0, 0, 0, 1, 2, 2, 2, 4, 4, 5, 9, 23, 45, 67, 78]

[0, 0, 0, 0, 1, 2, 2, 2, 4, 4, 5, 9, 23, 45, 67, 78]

[0, 0, 0, 0, 1, 2, 2, 2, 4, 4, 5, 9, 23, 45, 67, 78]

[0, 0, 0, 0, 1, 2, 2, 2, 4, 4, 5, 9, 23, 45, 67, 78]

[0, 0, 0, 0, 1, 2, 2, 2, 4, 4, 5, 9, 23, 45, 67, 78]

[0, 0, 0, 0, 1, 2, 2, 2, 4, 4, 5, 9, 23, 45, 67, 78]

[0, 0, 0, 0, 1, 2, 2, 2, 4, 4, 5, 9, 23, 45, 67, 78]

[0, 0, 0, 0, 1, 2, 2, 2, 4, 4, 5, 9, 23, 45, 67, 78]

[0, 0, 0, 0, 1, 2, 2, 2, 4, 4, 5, 9, 23, 45, 67, 78]

[78, 67, 45, 23, 9, 5, 4, 4, 2, 2, 2, 1, 0, 0, 0, 0]

 

推荐阅读:
  1. python怎么实现快速排序
  2. JS如何快速排序

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

排序 快速 分治

上一篇:【小白到大牛之路2】交换机后台管理之登录菜单

下一篇:shell 脚本应用《五》批量生产文件

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》