Python编程:排序算法之归并排序

简介: Python编程:排序算法之归并排序

归并排序

  • 时间复杂度O(nlogn)
  • 空间复杂度O(n)

假设现在的列表分两段有序,将其合成为一个有序列表

  • 分解: 将列表越分越小,直至分成一个元素
  • 一个元素是有序的
  • 合并:将两个有序的列表合并,列表越来越大

代码实现

# 归并排序
import random
import sys
sys.setrecursionlimit(10000) # 设置递归深度默认1000
# 一次归并,合并有序序列
def merge(lst, low, mid, high):
    i = low
    j = mid + 1
    lst_temp = []
    while i<=mid and j <= high:
        if lst[i] <= lst[j]:
            lst_temp.append(lst[i])
            i += 1
        else:
            lst_temp.append(lst[j])
            j += 1
    while i <= mid:
        lst_temp.append(lst[i])
        i += 1
    while j <= high:
        lst_temp.append(lst[j])
        j += 1
    lst[low: high+1] = lst_temp
#归并排序
def merge_sort(lst, low, high):
    if low < high:
        mid = (low + high)//2
        merge_sort(lst, low, mid)
        merge_sort(lst, mid+1, high)
        merge(lst, low, mid, high)
lst = list(range(10))
random.shuffle(lst)
merge_sort(lst, 0, 9)
print(lst)
#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
相关文章
|
6月前
|
网络协议 安全 网络安全
雷池WAF+emby+ddnsgo搭建个人影音库,实现远程安全访问流媒体
雷池WAF+emby+ddnsgo搭建个人影音库,实现远程安全访问流媒体
473 5
|
新零售 人工智能 搜索推荐
苗悦堂新零售模式系统开发
新零售也一样,今天的模式可以是新零售
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个题目详解(逻辑类型题2)
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个题目详解(逻辑类型题2)
276 1
|
JavaScript 定位技术 容器
Echarts 地图-按照分类显示省+散点
中国切图按照分类展示不同散点图标以及信息
766 0
|
Web App开发 XML iOS开发
Tiktok 根据主播id(uniqueId)获取个人详细信息
Tiktok 根据主播id(uniqueId)获取个人详细信息
|
编解码 编译器
4.1保护模式
4.1保护模式
184 0
数字读取
cout 小数点后位数限制   数字与进制
696 0
|
4天前
|
弹性计算 人工智能 安全
云上十五年——「弹性计算十五周年」系列客户故事(第二期)
阿里云弹性计算十五年深耕,以第九代ECS g9i实例引领算力革新。携手海尔三翼鸟、小鹏汽车、微帧科技等企业,实现性能跃升与成本优化,赋能AI、物联网、智能驾驶等前沿场景,共绘云端增长新图景。
|
10天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾