首页 > 编程语言 >python实现归并排序

python实现归并排序

时间:2024-09-30 21:47:42浏览次数:9  
标签:归并 right python merge result 排序 data left

归并排序是把数组分为两半,两半再继续细分为小的数组,小数组完成各自排序后,分别合并为几个比较大的数组并完成内部排序,最后合并为一个数组,这时候基本排序是有序的。

代码如下

data=[6,15,4,2,8,5,11,9,7,13]

 

def merge_sort(data):

    if len(data)<=1:

        return data

        

    mid=len(data)//2

    

    left=merge_sort(data[:mid])

    right=merge_sort(data[mid:])

        

    return merge(left,right)

    

def merge(left,right):

    result=[]  

    i,j=0,0

    

    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

            

    if i<len(left):

        result.extend(left[i:]) 

    if j<len(right):

        result.extend(right[j:])     

    return result

    

print(merge_sort(data))              

归并排序可以处理超过内存容量的大规模数据处理。

时间复杂度是O(nlogn)

空间复杂度是O(n)

标签:归并,right,python,merge,result,排序,data,left
From: https://blog.csdn.net/2301_81968528/article/details/142664256

相关文章

  • 强化学习-python案例
    强化学习是一种机器学习方法,旨在通过与环境的交互来学习最优策略。它的核心概念是智能体(agent)在环境中采取动作,从而获得奖励或惩罚。智能体的目标是最大化长期奖励,通过试错的方式不断改进其决策策略。在强化学习中,智能体观察当前状态,选择动作,并根据环境反馈(奖励和下一个状......
  • python 图片查看器
     #coding=utf-8#tkinter的Label控件以及三种布局管理方法#https://www.cnblogs.com/jackie-lee/p/16191662.html#python对话框图形界面显示图片#https://blog.csdn.net/SAPmatinal/article/details/131818285#菜单设置#https://blog.csdn.net/weixin_42272......
  • python远程登录Admin.NET
    defgetCipherPassword(password):private_key='8EDB615B1D48B8BE188FC0F18EC08A41DF50EA731FA28BF409E6552809E3A111'#这里假设你已经有了私钥字符串,实际中需通过特定方法生成public_key='0484C7466D950E120E5ECE5DD85D0C90EAA85081A3A2BD7C57AE6DC822EFCCBD66......
  • python 敏感词识别处理
    定义词库1、敏感词库(black_word.txt)2、jeiba分词库(jieba_db_file.txt)(我这简单的就用文本来记录了,可以将这些词库都通过数据库来存储,对企业来说通过可视化页面去增删改可能会更方便运营处理)代码示例importosimportjiebablack_word_list=list()defload_word......
  • SCIE1000  Python and Communication
    SCIE1000 Semester 2, 2024Python and Communication Assignment1    The scenarioA new public science museum in St Lucia is developing an exhibit. A feature ofthe museum is that each exhibit item is accompanied by two expla......
  • 【python开发环境搭建】
    虽然网上有很多python开发环境搭建的文章,不过重复造轮子还是要的,记录一下过程,方便自己以后配置,也方便正在学习中的同事配置他们的环境。1.准备好安装包1)上python官网下载python运行环境(DownloadPython|Python.org),目前比较稳定的是python-3.5.22)上pycharm官......
  • Python 类型检查的利器
    Python类型检查的利器在Python编程中,类型注解(typehints)逐渐成为提高代码质量的重要工具。然而,Python的动态类型特性意味着类型错误可能在运行时才显现,这往往导致调试困难和运行时错误。为了解决这一问题,mypy提供了一种静态类型检查的解决方案,帮助开发者在编码阶段发现潜......
  • Python数据库操作:使用Python连接和操作数据库
    Python数据库操作:使用Python连接和操作数据库数据库入门小分队:Python带你探索数据海洋搭建桥梁:使用Python连接数据库的几种常见方式示例代码:使用`sqlite3`创建并连接一个SQLite数据库游刃有余:掌握基本SQL语句与Python的完美结合示例代码:执行复杂的SQL查询实战演练:通过......
  • Python与自然语言处理库BERT
    Python与自然语言处理库BERT揭开BERT的神秘面纱:从零开始理解这个改变游戏规则的语言模型实战演练:用Python和BERT搭建你的第一个情感分析小助手不只是翻译:探索BERT在跨语言任务中的神奇表现文本生成新高度:利用BERT创造流畅连贯的文章段落优化与调优:让BERT更好地适应特定......
  • Python自动驾驶指南
    Python自动驾驶指南启程:自动驾驶的奇幻之旅编程魔法师的工具箱:Python与自动驾驶必备库示例代码:使用OpenCV读取并显示图片传感器的秘密:如何用Python解析汽车的眼睛和耳朵激光雷达点云处理智能决策者:构建基于Python的路径规划与避障算法A*搜索算法简介实现A*算法实战演......