为了账号安全,请及时绑定邮箱和手机立即绑定

random_randint不适用于合并排序

random_randint不适用于合并排序

湖上湖 2022-08-11 17:14:40
使用一些随机数的合并排序不起作用。当我调用对随机数进行排序时,我在终端上获得输出。有什么想法吗?Nonemerge_sort()输出:随机数?: 20 合并排序: [7, 7, 10, 19, 10, 1, 3, 6, 15, 10, 15, 5, 0, 1, 6, 9, 15, 1, 5, 6] 无def merge_sort(sequence):    if len(sequence) > 1:        half_sequence = len(sequence) // 2        first_half = sequence[:half_sequence]        second_half = sequence[half_sequence:]        merge_sort(first_half)        merge_sort(second_half)        i = 0        j = 0        k = 0        while i < len(first_half) and j < len(second_half):            if first_half[i] < second_half[j]:                sequence[k] = first_half[i]                i += 1                #print (i)            else:                 sequence[k] = second_half[j]                j += 1            k += 1            #print (i)        while i < len(first_half):            sequence[k] = first_half[i]            i += 1            k += 1        while j < len(second_half):            sequence[k] = second_half[j]            j += 1            k += 1def random_list(n):    lista = [0] * n    for i in range(n):          lista[i] = random.randint(0,n)    return listaprint("Random Numbers?:")n=int(input())random_num = random_list(n)print ("Merge Sort: {}".format(random_num))print(merge_sort(random_num))´´´
查看完整描述

2 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

您的函数没有语句merge_sortreturn



查看完整回答
反对 回复 2022-08-11
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

    import random

    def merge_sort(sequence):

        if len(sequence) > 1:

            half_sequence = len(sequence) // 2

            first_half = sequence[:half_sequence]

            second_half = sequence[half_sequence:]


            merge_sort(first_half)

            merge_sort(second_half)

            i = 0

            j = 0

            k = 0


            while i < len(first_half) and j < len(second_half):

                if first_half[i] < second_half[j]:

                    sequence[k] = first_half[i]

                    i += 1

                    #print (i)

                else: 

                    sequence[k] = second_half[j]

                    j += 1

                k += 1

                #print (i)


            while i < len(first_half):


                sequence[k] = first_half[i]

                i += 1

                k += 1


            while j < len(second_half):

                sequence[k] = second_half[j]

                j += 1

                k += 1

        return sequence


        def random_list(n):

            lista = [0] * n

            for i in range(n):

                  lista[i] = random.randint(0,n)

            return lista


        print("Random Numbers?:")

        n=int(input())


        random_num = random_list(n)

        print ("Merge Sort: {}".format(random_num))

        print(merge_sort(random_num))´´´

合并排序函数没有 return 语句。请返回 。sequence


查看完整回答
反对 回复 2022-08-11
  • 2 回答
  • 0 关注
  • 136 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号