python - 无法在下面的 python 代码中进行插入排序工作
问题描述
我有以下代码试图对数组“数字”执行插入排序。(并打印排序后的数组)
该算法似乎存在逻辑错误,但我无法发现它,因为它似乎是有道理的。
任何人都可以建议使用现有代码并提供适当解释的解决方案吗?
numbers=[4,1,2,5,3]
for i in range(len(numbers)-1):
position=1
while position>0 and numbers[position]<numbers[position-1]:
#print("Position:",numbers[position])
#print("Position-1:",numbers[position-1])
temp=numbers[position-1]
numbers[position-1]=numbers[position]
numbers[position]=temp
#print("New value of position",numbers[position])
position=position+1
print(numbers)
print("Insertion Sort)
解决方案
通过对程序的简单修改,您的插入排序将起作用。
while position>0
将始终为真,因为位置增加了。
numbers=[4,1,2,5,3]
last_num = len(numbers)-1
for i in range(last_num):
position=i
while position<last_num:
if numbers[position]>numbers[position+1]:
temp=numbers[position+1]
numbers[position+1]=numbers[position]
numbers[position]=temp
position+=1
print(numbers)
print("Insertion Sort")
印刷:
[1, 2, 3, 4, 5]
Insertion Sort
编辑:position>0
你需要
numbers=[4,1,2,5,3]
last_num = len(numbers)-1
for i in range(last_num):
position=last_num
while position>0:
if numbers[position]<numbers[position-1]:
temp=numbers[position-1]
numbers[position-1]=numbers[position]
numbers[position]=temp
position-=1
print(numbers)
print("Insertion Sort")
推荐阅读
- facebook - Facebook API Android 工作室 FACEbookCallback
- excel - 在循环VBA(Excel)中组合两个单元格
- c# - 在 C# 中模拟 NamedPipeClient 执行 PowerShell
- python - 用什么标签解析 BeautifulSoup 来检索这个数字
- java - 我想检查孩子是否存在(这是用户 ID),但我面临逻辑错误
- flutter - 如何获得 Dart Isolate 错误的完整堆栈跟踪
- laravel - 查询删除时ElasticSearch版本冲突异常
- javascript - Discord 机器人不回复消息
- python - 从时间戳列 pandas 中添加和减去秒列
- flutter - Dart Null-Safety - Range Error when executing dart migrate to upgrade to new null safety