python 递归排序[通俗易懂]

python 递归排序[通俗易懂]python递归    对序列排序,使用二分冒泡排序,将序列分割为两部分    第一步:首先,设定一个初始值,假设为序列的第一个值,    第二步:将序列中大于初始值的值,放置于初始值的左边    第三步: 将序列中小于初始值的值,放置于初始值的右边    第四步:将序列一分为二,存放小值的列表作为一个列表进入递归…

大家好,又见面了,我是你们的朋友全栈君。

python 递归

       对序列排序,使用二分冒泡排序,将序列分割为 两部分

       第一步: 首先,设定一个初始值, 假设为 序列的第一个值,

       第二步: 将序列中 大于初始值的 值,放置于 初始值的左边

       第三步: 将序列中 小于初始值的 值,放置于 初始值的右边

       第四步: 将序列一分为二,存放小值的列表 作为一个列表 进入递归

                                                   存放大值的列表 作为一个列表 进入递归

       返回一个排好序的列表

def sort_list(lis, start, end):
    # 判断结束位置
    if start < end:
        i, j = start, end
        # 设置初始值
        base = lis[i]
        while i < j :
            # 此循环可将 序列分为两部分
            while i < j and lis[j] >= base:
                j = j - 1
            lis[i] = lis[j]
            
            while i < j and lis[i] <= base:
                i = i + 1
            lis[j] = lis[i]
        lis[i] = base
        
        
        # 将序列 一分为二 此为小值列表
        sort_list(lis, start, i-1)
        # 此为大值列表
        sort_list(lis, j+1, end)

    return lis

if __name__ == '__main__':
    lis = [1,2,3,5,7,11,4,6]
    sort_list(lis, 0, len(lis)-1)
    print(lis)

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147843.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java基本数据类型 think in java_Think in Java(一):Java基础[通俗易懂]

    java基本数据类型 think in java_Think in Java(一):Java基础[通俗易懂]一.OOP的特点(1)万物皆为对象;(2)程序是对象的集合,他们通过发送信息来告诉彼此所要做的;(3)每一个对象都有自己的由其它对象所构成的存储;(4)每一个对象都拥有它的类型;(5)某一特定类型的对象都能够接收相同的消息;二.Java比C++简单?(1)Java有垃圾回收器,不用手动销毁对象;(2)Java使用单根继承;(3)Java仅仅能以一种方式创建对象(在堆上创建);…

    2022年7月8日
    14
  • 淘宝抢购Python脚本

    淘宝抢购Python脚本想买mate40,但总是抢不到,所以想试着能不能写个脚本代码。第一步:把想要抢购的商品加进购物车,注意:脚本是对购物车内全部商品进行下单操作,所以不够买的商品最好先从购物车内删除。第二步:写好Python脚本,在抢购之前运行,并设置好抢购时间。Python脚本实现安装Python。我安装的是anaconda安装webdriver扩展。它是Selenium模块的一部分。Selenium是一个用于Web应用程序测试的工具,用于测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。Selen

    2022年4月29日
    44
  • linux下 opencv 和 ffmpeg安装「建议收藏」

    linux下 opencv 和 ffmpeg安装「建议收藏」1、要先安装ffpmeg下载地址http://www.ffmpeg.org/download.html这里选择版本3.4.8直接下载包上传或者linux直接下载wgethttp://www.ffmpeg.org/releases/ffmpeg-3.4.8.tar.gz解压当前包tar-zxvfffmpeg-3.4.8.tar.gzcdffmpeg-3.4.8/安装ffmpeg过程中,执行./configure时,报yasm/nasmnotfoundortooold.U

    2022年9月4日
    3
  • Boost.Lockfree无锁结构

    Boost.Lockfree无锁结构[译]https://beta.boost.org/doc/libs/1_72_0/doc/html/lockfree.html boost.Lockfree无锁结构学习

    2022年7月19日
    10
  • Linux tar 打包[通俗易懂]

    Linux tar 打包[通俗易懂]转载:https://www.cnblogs.com/lijc1990/p/3545503.html范例一:将整个/etc目录下的文件全部打包成为/tmp/etc.tar[root@linux~]#tar-cvf/tmp/etc.tar/etc&lt;==仅打包,不压缩![root@linux~]#tar-zcvf/tmp/etc.tar.gz/etc&l…

    2022年6月1日
    26
  • bat命令闪退问题

    bat命令闪退问题今天执行一个bat命令,然而会出现问题:双击执行bat命令时,命令提示符界面会闪退。然而该bat命令在他人电脑上可正常执行,而我会遇到这种问题。以下是我尝试的方法:首先尝试编辑bat命令,在bat命令末尾添加pause,保存。如此,重新双击执行bat命令,命令提示符界面仍然闪退。接着借助浏览器查询这种问题发生的原因以及解决方法,https://blog.csdn.net/springon…

    2022年9月23日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号