python实现归并排序

python实现归并排序

今天用python实现了排序算法之一的归并排序,归并排序主要采用了分而治之的思想。下面是我的全部代码,采用python3实现,在网上看了很多归并排序的代码,代码不同,思想相同,我的代码也会有一些不方便的地方,大家一起学习交流

import random
import math

list_number=10        #列表元素的个数
max_number=99999        #哨兵

def merge(list,p,q,r):    #合并
    n1=q-p+1
    n2=r-q
    list1=[]
    list2=[]
    for i in range(n1):
        list1.append(list[p+i])
    for j in range(n2):
        list2.append(list[q+j+1])
    list1.append(max_number)
    list2.append(max_number)
    i=0
    j=0
    for k in range(p,r+1):
        if(list1[i]<=list2[j]):
            list[k]=list1[i]
            i=i+1
        else:
            list[k]=list2[j]
            j=j+1
            
def merge_sort(list,p,r):  #分而治之
    if(p<r):
        q=math.floor((p+r)/2)
        merge_sort(list,p,q)
        merge_sort(list,q+1,r)
        merge(list,p,q,r)

list=[]
for n in range(list_number):         #生成随机数初始化列表
    list.append(random.randint(1,1000))

merge_sort(list,0,len(list)-1)

for x in range(list_number):#打印看结果
    print(list[x],end=' ')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值