簡體   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