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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 华为悦盒ec6108v9a怎么刷机_华为悦盒官方固件

    华为悦盒ec6108v9a怎么刷机_华为悦盒官方固件华为悦盒EC6108V9A一、产品型号二、工具准备与资料下载1.[当贝网站教程及工具下载](https://www.znds.com/jc/article/7020-1.html)(此网站的工具可以用,但当贝的教程极其混乱,仅供动手者参考)2.固件路径三、刷机教程1.进入盒子的Androidsystemrecovery<3e>2.清除数据3.选择Applyupdatefromexternalstorage四、盒子默认密码五、常用应用一、产品型号名称型号华为悦

    2025年7月14日
    2
  • Linux vi命令编辑文件「建议收藏」

    Linux vi命令编辑文件「建议收藏」进入vi编辑模式:vi文件名进入编辑:按i键编辑完按Esc退出编辑模式此时输入::wq保存后退出:wq!强制保存后退出:w保存但不退出:q不保存并退出:q!不保存并强制退出(比如报错时E212:Can’topenfileforwriting)…

    2022年9月22日
    2
  • 彻底弄懂StringBuffer与StringBuilder的区别「建议收藏」

    彻底弄懂StringBuffer与StringBuilder的区别「建议收藏」一问道StringBuffer与StringBuilder的区别,张口就来StringBuffer是线程安全的,因为它相关方法都加了synchronized关键字,StringBuilder线程不安全。没错,确实如此,但是我们查看过源码会发现StringBuffer是从jdk1.0就开始了,StringBuilder是从jdk1.5开始的。于是我就产生这样一个疑问,既然已经有了StringBu…

    2022年6月28日
    25
  • pycharm统一缩进快捷键_pycharm 注释快捷键

    pycharm统一缩进快捷键_pycharm 注释快捷键1.批量注释:选择要注释的文本行,背景变化后,同时按Ctrl+/2.取消批量注释:选择已注释的文本行,背景变化后,同时按Ctrl+/3.批量缩进:选择要缩进的文本行,背景变化后,按下TAB键4.取消批量缩进:选择要缩进的文本行,背景变化后,按下SHIFT+TAB键…

    2022年8月27日
    7
  • linux中更改用户名_linux修改用户名和主目录

    linux中更改用户名_linux修改用户名和主目录Linux将用户名修改后,还需要修改组名+家目录+UID这只会更改用户名,而其他的东西,比如用户组,家目录,UID等都保持不变。1、修改用户名$usermod-l新用户旧用户这只会更改用户名,而其他的东西,比如用户组、家目录、ID等都保持不变。注意:你需要从要改名的帐号中登出并杀掉该用户的所有进程,要杀掉该用户的所有进程可以执行下面命令$sudopkill-u旧用户名$…

    2022年9月18日
    2
  • ora01017 linux,ORA-01017: invalid username/password; logon denied 解决办法

    ora01017 linux,ORA-01017: invalid username/password; logon denied 解决办法ORA-01017:invalidusername/password;logondenied解决办法环境介绍:操作系统RHEL6.4X64、数据库:ORACLE11.2.0.4.0;在现有环境下手动创建数据库,在数据库的手动创建过程中没有大的问题,但在数据库创建完成后出现在本地可以登录数据库用户包括管理员账户,通过客户端远端无法登录报如下错误:通过测试,或者在数据库系统中更换用户账户口…

    2022年5月6日
    274

发表回复

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

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