[英]How does this sorting code work? How does it find the minimum numbers?
我在堆栈溢出中找到了这段代码,回答了我正在研究的一个主题(如何在不使用 sort 和 sorted 内置函数的情况下对整数列表进行排序):
data_list = [-5, -23, 5, 0, 23, -6, 23, 67]
new_list = []
while data_list:
minimum = data_list[0] # arbitrary number in list
for x in data_list:
if x < minimum:
minimum = x
new_list.append(minimum)
data_list.remove(minimum)
print(new_list)
它工作得很好。 但是当我通过它时,我对它是如何工作的感到困惑。
minimum
设置为列表中的第一个元素-5
。 当for
循环启动时,它从列表的第一个元素开始。 因此x
等于-5
,因此x
不小于minimum
。 那么迭代如何进行呢?
也许一些逐步的可视化会对您有所帮助。 我已经将您的代码放入其中,但是,这不是进行排序实现的最佳方式。 您可以检查以下算法:快速排序、归并排序、冒泡排序等。
Programiz 对不同的排序算法有一个一般性的解释。
您还可以在那里找到一般的算法,它们的实现可以在 pythontutor 中逐步可视化它们。
我知道这很多,但我希望它会对你有所帮助。
该代码通过查找data_list
的最小值,将其从data_list
中删除并将其附加到new_list
来工作。 因此它将数字从最小到最大存储在new_list
中。
data_list = [-5, -23, 5, 0, 23, -6, 23, 67]
new_list = []
while data_list:
minimum = data_list[0] # get default number as a placeholder, minimum does not store minimum yet
for x in data_list:
if x < minimum: # if it finds a new minimum
minimum = x # then minimum is set to that
#since it checked all values of data_list, now, minimum is definitely the minimum
new_list.append(minimum) # new_list has the minimum added
data_list.remove(minimum) # the number is now in the correct position, so it can be discarded.
print(new_list)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.