猿问

random_randint不适用于合并排序

使用一些随机数的合并排序不起作用。当我调用对随机数进行排序时,我在终端上获得输出。有什么想法吗?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 += 1


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))´´´


湖上湖
浏览 137回答 2
2回答

繁星淼淼

您的函数没有语句merge_sortreturn

一只甜甜圈

&nbsp; &nbsp; import random&nbsp; &nbsp; def merge_sort(sequence):&nbsp; &nbsp; &nbsp; &nbsp; if len(sequence) > 1:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; half_sequence = len(sequence) // 2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; first_half = sequence[:half_sequence]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; second_half = sequence[half_sequence:]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; merge_sort(first_half)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; merge_sort(second_half)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; i = 0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; j = 0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; k = 0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while i < len(first_half) and j < len(second_half):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if first_half[i] < second_half[j]:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sequence[k] = first_half[i]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; i += 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #print (i)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else:&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sequence[k] = second_half[j]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; j += 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; k += 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #print (i)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while i < len(first_half):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sequence[k] = first_half[i]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; i += 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; k += 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while j < len(second_half):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sequence[k] = second_half[j]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; j += 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; k += 1&nbsp; &nbsp; &nbsp; &nbsp; return sequence&nbsp; &nbsp; &nbsp; &nbsp; def random_list(n):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lista = [0] * n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for i in range(n):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lista[i] = random.randint(0,n)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return lista&nbsp; &nbsp; &nbsp; &nbsp; print("Random Numbers?:")&nbsp; &nbsp; &nbsp; &nbsp; n=int(input())&nbsp; &nbsp; &nbsp; &nbsp; random_num = random_list(n)&nbsp; &nbsp; &nbsp; &nbsp; print ("Merge Sort: {}".format(random_num))&nbsp; &nbsp; &nbsp; &nbsp; print(merge_sort(random_num))´´´合并排序函数没有 return 语句。请返回 。sequence
随时随地看视频慕课网APP

相关分类

Python
我要回答