归并排序(python版)

这段代码演示了如何用Python实现归并排序算法,对长度为10000的数组进行排序,并测量了运行时间为6秒多。这说明对于大数组,归并排序的时间效率相对较低。

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

import random
import time
a=[]
#随机产生一个大整型数组
for i in range(10001):
    a1 = random.randint(1, 100000)
    a.append(a1)

start=time.perf_counter()
def Merge(a,low,mid,high):
    b=[]
    for i in range(len(a)):
        b.append(0)
    for i in range(low,high+1):
        b[i]=a[i]
    i=low
    j=mid+1
    k=i
    while(i<=mid and j<=high):
        if(b[i]<b[j]):
            a[k]=b[i]
            k+=1
            i+=1
        else:
            a[k]=b[j]
            j+=1
            k+=1
    while(i<=mid):
        a[k]=b[i]
        i+=1
        k+=1
    while (j <= mid):
        a[k] = b[j]
        j += 1
        k += 1

def MergeSort(a,low,high):
    if(low<high):
        mid = (low + high) // 2
        MergeSort(a,low,mid)
        MergeSort(a,mid+1,high)
        Merge(a,low,mid,high)

MergeSort(a,0,len(a)-1)
end = time.perf_counter()
print(end-start)#输出运行时间
#测试数组过大,所以没有输出排序后的数组
#print(a) 

运行结果

长度为10000的数组,python版归并排序的整个运行过程花了6秒多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值