我对编程还很陌生;我只学习了几个星期的Python。最近有人给我一个练习,要求我生成一个整数列表,然后在单独的列表中手动将数字从最低到最高排序。
import random
unordered = list(range(10))
ordered = []
lowest = 0
i = 0
random.shuffle(unordered)
lowest = unordered[0]
while i in unordered:
if unordered[i] < lowest:
lowest = unordered[i]
i += 1
if i >= len(unordered):
i = 0
ordered.append(lowest)
unordered.remove(lowest)
lowest = unordered[i]
print(ordered)
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所拥有的,坦率地说,它根本不起作用。我得到的伪代码是这样的:
- 创建一个空列表来保存有序元素
- 虽然无序列表中仍然有元素
- 将最低变量设置为无序列表中的第一个元素
- 对于无序列表中的每个元素
- 如果元素低于最低值
- 将该元素的值分配给最低值
- 将最低的附加到有序列表中
- 从无序列表中删除最低的
- 打印出已排序的列表
到目前为止,我遇到的最大问题是我的计数器无法可靠地为我提供一种从无序列表中挑选出最低数字的方法。然后我在索引列表时遇到问题,即索引超出范围。谁能给我一些关于我哪里出错的反馈?
另外,我得到了这个我不太确定的信息:
您可以使用一种既定的方法对列表进行排序,称为选择排序。
这次我不应该使用 Python 的内置排序方法。这一切都应该手动完成。