首页 > 解决方案 > 这个插入排序和冒泡排序代码的语法有什么问题?

问题描述

我目前正在采用离散结构和算法,并且必须第一次使用 python。

我的语法有一点问题,并且我的冒泡排序和插入排序功能打印有问题

def insertion_sort(numbers):
    numbers = [1, 5, 9, 3, 4, 6]
    for index in range(1, len(numbers)):
        value = numbers[index]
        i = index - 1
        while i >= 0:
            if value < numbers[i]:
                numbers[i+1] = numbers[i]
                numbers[i] = value
                i = i - 1
                print(numbers)
            else:
                break
def bubble_sort(numbers):
    for i in range(0, len(numbers) - 1, 1):
        for j in range(0, len(numbers) - 1 - i, 1):
            if numbers[j] < numbers[j + 1]:

                temp = numbers[j]
                numbers[j] = numbers[j + 1]
                numbers[j + 1] = temp


numbers = [1, 5, 9, 3, 4, 6]

print(numbers)

标签: python-3.x

解决方案


  • 您已经定义了两个函数,但从未调用它们。因此,他们没有被执行。
  • 您已经定义了两个函数,以便它们需要一个numbers参数。因此,您需要使用数字列表作为输入来调用它们。例如。insertion_sort([1, 5, 9, 3, 4, 6])
  • 您的函数没有返回任何值。所以他们只是简单地获取numbers列表参数,并对其进行排序。为了从函数外部访问结果,您需要return numbers在每个函数的末尾添加。

总而言之,您的代码应如下所示:

def insertion_sort(numbers):
    for index in range(1, len(numbers)):
        value = numbers[index]
        i = index - 1
        while i >= 0:
            if value < numbers[i]:
                numbers[i+1] = numbers[i]
                numbers[i] = value
                i = i - 1
            else:
                break
    return numbers

def bubble_sort(numbers):
    for i in range(0, len(numbers) - 1, 1):
        for j in range(0, len(numbers) - 1 - i, 1):
            if numbers[j] < numbers[j + 1]:

                temp = numbers[j]
                numbers[j] = numbers[j + 1]
                numbers[j + 1] = temp
    return numbers

numberstosort = [1, 5, 9, 3, 4, 6]
print(insertion_sort(numberstosort))
print(bubble_sort(numberstosort))

这将打印每个函数的输出。输出:

[1, 3, 4, 5, 6, 9]
[9, 6, 5, 4, 3, 1]

推荐阅读