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