首页 > 编程语言 >python系列归并排序图文详解

python系列归并排序图文详解

时间:2022-10-21 21:34:39浏览次数:50  
标签:归并 python lst 编辑 算法 序列 排序 图文

 算法原理:

       改归并排序将序列折半分成两个子序列,然后继续拆分,直到每个序列只有一个数据时,再将各个子序列排序后合并叠加。直到所有子序列都合并,排序完成。该算法采用分治的思想。

图解算法思路:

​编辑

 

​编辑

 

​编辑

 

​编辑

def merge_sort(lst):
    if len(lst) <= 1:
        return lst  # 从递归中返回长度为1的序列

    middle = len(lst) // 2
    left = merge_sort(lst[:middle])  # 通过不断递归,将原始序列拆分成n个小序列
    right = merge_sort(lst[middle:])
    print("left",left)
    print("right", right)
    return merge(left, right)

def merge(left, right):
    i, j = 0, 0
    result = []
    while i < len(left) and j < len(right):  # 比较传入的两个子序列,对两个子序列进行排序
        if left[i] <= right[j]:
            result.append(left[i])
            i += 1
        else:
            result.append(right[j])
            j += 1
    result.extend(left[i:])  # 将排好序的子序列合并
    result.extend(right[j:])
    return result

a = [3, 4, 1, 6, 2, 9, 7, 0, 8, 5]
lst = merge_sort(a)
print(lst)

 


标签:归并,python,lst,编辑,算法,序列,排序,图文
From: https://www.cnblogs.com/qingshaonianbiancheng/p/16814831.html

相关文章

  • 使用vscode创建我的第一个python程序
    软件配置:首先打开vscode,点击红色方框按钮:  在搜索栏输入【python】,并下载python插件:   如果觉得软件是英文不好理解可以下一个中文插件:   创建 第......
  • Python教程Day06-字符串
    一、认识字符串字符串是Python中最常用的数据类型。我们一般使用引号来创建字符串。创建字符串很简单,只要为变量分配一个值即可。a='helloworld'b="abcdefg"print(......
  • Python教程Day07-列表
    一、列表的应用场景当我们需要存一个数据时,可以直接使用变量,但是,当我们要存储100个,设置更多的时候,变量肯定不行,这时候我们要用啥?此时列表就有它的用武之地了,一次性存储多个......
  • 【python】这么**得小姐姐网~不敢赶紧采集一波~免得它没了
    前言大家早好、午好、晚好吖~ 今天我们来采集一下这个小姐姐网~  环境使用:Python3.8解释器Pycharm编辑器importreimportrequests>>>pip......
  • 如何快速在Ubuntu上搭建python环境?
    如何快速在Ubuntu上搭建python环境?一、准备好python源码包使用curl命令获取python源码包的过程很缓慢且容易失败,因此提前去官网下载好后放在本地是最好的办法。二、启动......
  • 正则表达式(C、C++、Python、Shell)
    撰写本文档的初衷本来是想介绍正则表达式怎么写,但是百度一搜,正则表达式的教程的质量已经相当高,我便不在班门弄斧了。正则表达式是一种方法,在不同的语言中,它的应用样式可能......
  • python基础-数据类型间的转换
    数据类型转换:将自身数据类型转化成新的数据类型,并拥有新数据类型相关操作的过程;为方便更好的帮助处理业务,将数据变更为更适合业务场景的类型;a='1', 此时想使用数字的......
  • python
    基础赋值打印word="""12345段落"""print(word[0:6])输出结果12345换行的话是空格字符不换行输出print('xyz',end="")print('dnf')......
  • Python 发送邮件的几种情况
    本次记录一下Python发送邮件的几种情况:1、正常发送2、正文带图片3、正文带表格4、正文带附件 首先来看一下Python发送邮件使用到的模块##导入模块fromemail.mi......
  • python的高级特性-迭代概念
    迭代Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身>>>fori,valueinenumerate(['A','B','C']):...prin......