听了九章大神的归并排序,手写

本文介绍了一个用于数组归并排序的程序,该程序能够将已分成有序两半的数组进行合并,确保最终结果完全有序。归并排序的时间复杂度为O(n),适用于处理长度为n的待排序数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#本程序用于对一个数组进行合并(merge)排序,这个数组满足:

1,可以从中间分成两半部分;

2,两部分各自本来就是有序的。

本程序是归并排序算法的一部分。效果是实现了从小到大排列。本程序时间复杂度O(n),n为待排序数组长度 

#本程序用于对一个数组进行合并(merge)排序,这个数组满足:1,可以从中间分成两半部分;2,两部分各自本来就是有序的。本程序是归并排序算法的一部分。效果是实现了从小到大排列。本程序时间复杂度O(n),n为待排序数组长度
def mergesort(a=[]):#定义一个输入变量为数组的python函数
    mid = int((len(a)-1)/2)#定位中间点
    temp = [0 for x in range(0,len(a))]#开辟一个等长的空的临时数组,用于临时存放比较结果
    k=0
    i = 0 #先定位好左半部分开始指针
    j = mid+1#再定位好右半部分开始指针
    while k < len(a):
        if i <=mid and j <= len(a)-1:#当左半部分没有循环结束且右半部分也没有循环结束时
            #print("i=",i,"j=",j,"k=",k)#多处print注释是因为一开始写错了,调试了很久orz    
            if a[i]<a[j]:#如果左半部分指针指向的数小于右半部分指针指向的数
                #print("a[i]=",a[i],"a[j]=",a[j])
                t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值