当前位置: 首页 > article >正文

算法——python实现归并排序

文章目录

      • 归并排序
      • NB三人组总结

归并排序

在这里插入图片描述

在这里插入图片描述

"""
归并排序
"""

"""
时间复杂度 :               O(N*logN)
空间复杂度 :               O(N)    需要额外生成一个临时变量,最大是N长
思路:假设有列表被分成两段,这两个段都是以同样的方式排好序的,那么只需要将这两段进行归并排序一次,列表就被排好序了。
由此思想,逐层递归。
"""


def merge(li, low, mid, high):
    i = low
    j = mid + 1
    ltmp = []
    while i <= mid and j <= high:  # 只要左右两边都有数
        if li[i] < li[j]:
            ltmp.append(li[i])
            i += 1
        else:
            ltmp.append(li[j])
            j += 1
    # while执行完,肯定有一部分没数了
    while i <= mid:
        ltmp.append(li[i])
        i += 1
    while j <= high:
        ltmp.append(li[j])
        j += 1
    li[low:high + 1] = ltmp


# li = [2,4,5,7,1,3,6,8]
# merge(li, 0, 3, 7)
# print(li)

def merge_sort(li, low, high):
    if low < high:  # 至少有两个元素,递归
        mid = (low + high) // 2
        merge_sort(li, low, mid)
        merge_sort(li, mid + 1, high)
        merge(li, low, mid, high)


li = list(range(1000))
import random

random.shuffle(li)
print(li)
merge_sort(li, 0, len(li) - 1)
print(li)

NB三人组总结

在这里插入图片描述

在这里插入图片描述

​ > 若有错误与不足请指出,关注DPT一起进步吧!!!


http://www.kler.cn/news/356693.html

相关文章:

  • 中小型企业网络的设计与实现
  • 基于语音识别的停车共享小程序(lw+演示+源码+运行)
  • 桂林旅游助手:一个SpringBoot开发的平台
  • 【JavaEE】——四次挥手,TCP状态转换,滑动窗口,流量控制
  • URP学习四
  • 关于串口中断时的一些问题
  • “一篇长文教你进行全方位的使用appium“
  • 使用开源的 Vue 移动端表单设计器创建表单
  • Flink Kubernetes Operator
  • 【实战指南】Vue.js 介绍组件数据绑定路由构建高效前端应用
  • JDK 1.5主要特性
  • v-model双向绑定组件通信
  • 【Python爬虫实战】从文件到数据库:全面掌握Python爬虫数据存储技巧
  • Leecode刷题之路第25天之K个一组翻转链表
  • Bootstrapping、Bagging 和 Boosting
  • 一个mmcv库与chamfer库不兼容的问题
  • OpenCV高级图形用户界面(11)检查是否有键盘事件发生而不阻塞当前线程函数pollKey()的使用
  • 推荐一个处理数据非常好用的在线工具
  • 2024软考网络工程师笔记 - 第3章.广域通信网
  • React 探秘(二): 双缓存技术