gpt4 book ai didi

python - 在python中手动排序10个整数的列表

转载 作者:行者123 更新时间:2023-11-28 21:56:13 25 4
gpt4 key购买 nike

我对编程还很陌生;我只学习了几周的 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)

这是我目前所拥有的,坦率地说,它根本不起作用。我得到的伪代码是这样的:

  • Create an empty list to hold the ordered elements
  • While there are still elements in the unordered list
    • Set a variable, lowest, to the first element in the unordered list
    • For each element in the unordered list
      • If the element is lower than lowest
      • Assign the value of that element to lowest
    • Append lowest to the ordered list
    • Remove lowest from the unordered list
  • Print out the ordered list

到目前为止,我遇到的最大问题是我的计数器无法可靠地为我提供从列表中无序地挑选出最低数字的方法。然后我在索引我的列表时遇到问题,即索引超出范围。任何人都可以给我一些关于我哪里出错的反馈吗?

另外,我得到了这个我不太确定的信息:

You can use an established method to sort the list called the Selection Sort.

这次我不应该使用 Python 的内置排序方法。这一切都应该手动完成。感谢您的帮助!

最佳答案

您无需创建另一个列表即可执行此操作。

x = [5, 4, 3, 2, 5, 1]
n = len(x)

# Traverse through all list elements
for i in range(n):

# Traverse the list from 0 to n-i-1
# (The last element will already be in place after first pass, so no need to re-check)
for j in range(0, n-i-1):

# Swap if current element is greater than next
if x[j] > x[j+1]:
x[j], x[j+1] = x[j+1], x[j]
print(x)

这适用于重复项和降序列表。它还包括一个小的优化,以避免对最后一个元素进行不必要的比较。

注意:这个答案和所有其他答案都使用冒泡排序,它简单但效率低下。如果您正在寻找性能,那么使用另一种排序算法会更好。参见 which is best sorting algorithm and why?

关于python - 在python中手动排序10个整数的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21816084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com