python-3.x - 这个插入排序和冒泡排序代码的语法有什么问题?
问题描述
我目前正在采用离散结构和算法,并且必须第一次使用 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)
解决方案
- 您已经定义了两个函数,但从未调用它们。因此,他们没有被执行。
- 您已经定义了两个函数,以便它们需要一个
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]
推荐阅读
- sql - 针对包含 7500 万条记录的表优化存储过程查询
- vb.net - 在 VB.NET 控制台应用程序中,如何从 My.Settings 对象获取应用程序的设置?
- wso2 - WSO2 企业集成商 (ESB) 每周卡住
- python - 使用 encoding="utf8" 时 Sublime 文本出错
- botframework - Teams Bot Auth:oAuth 卡提示使用 AADV2 每小时登录一次
- node.js - 无法在 Node.js 中将数据传送到我的车把模板
- r - 如何从组级别表中获取个人级别表?
- python - 获取 numpy 多维数组的索引
- jquery - jQuery UI Slider-Pips:仅将标签添加到每个其他点
- php - Codeigniter 中的 Ajax 无限滚动