繁体   English   中英

这个排序代码是如何工作的? 它如何找到最小数字?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM