【发布时间】:2011-12-04 20:05:45
【问题描述】:
作为 python 任务的一部分,我试图在不使用 sort() 方法的情况下实现列表排序(升序),我认为我的逻辑是正确的,但我一直收到错误:
sample=[23,44,12,1,6,87]
temp=0
for i in range(0,len(sample)):
if sample[i] > sample[i+1]:
sample[i]=temp
sample[i]=sample[i+1]
sample[i+1]=temp
这一直给我一个 list: index out of range 错误,我知道这是因为当 i == 3 时代码仍然执行 i+1。
在这方面需要帮助..
我把代码改成:
for i in range(0,len(sample)-1):
if sample[i] > sample[i+1]:
temp=sample[i]
sample[i]=sample[i+1]
sample[i+1]=temp
消除错误但不对列表进行排序
【问题讨论】:
-
快速谷歌搜索将产生许多可能的排序算法。我建议你从那里开始。至少,你的教科书中至少应该有一个。
-
将
for i in range(0,len(sample)):更改为for i in range(0,len(sample)-1):。现在你只需要修正你的算法。 -
Steven 所说的 + 您与 temp 的交换逻辑也是错误的,temp 永远不会在代码中 = 的左侧
-
我建议在“让代码正常工作”之前先买一本严肃的教科书并了解你在做什么。
-
这是你的作业。大概您的教授已经涵盖了排序算法。如果没有,请参阅faculty.cs.niu.edu/~hutchins/csci241/sorting.htm 并尝试将其中之一翻译成 Python。如果您编写的代码有错误,我们将始终愿意提供指点。