簡體   English   中英

使用python冒泡排序穩定排序

[英]stable sorting using python bubble sort

所以,我得到了我的元組列表,按順序排序。 我缺少的是讓排序穩定..

我怎樣才能使泡泡排序穩定? (保持對類似物品的訂單)

def bubble_sort_2nd_value(tuples_list):
    NEWLIST = []
    ITEM_MOVE = 0
    for i in tuples_list:
        NEWLIST.append(i)
    for i in range(len(NEWLIST)):
         for j in range(i+1, len(NEWLIST)):
             if(NEWLIST[j][1] < NEWLIST[i][1]):
                 ITEM_MOVE = 1
                 NEWLIST[j],NEWLIST[i] = NEWLIST[i],NEWLIST[j]

    if (ITEM_MOVE == 0):
        print(tuples_list)
    else:
        print(NEWLIST)

tuples_list =  [('h2', 8), ('h4', 30), ('h6', 7), ('h8', 54), ('h1', 72), ('h3', 8), ('h5', 7), ('h7', 15), ('h7', 24)]

bubble_sort_2nd_value(tuples_list)

預期的測試人員沖突和y災難比較:顯示預期的元素0的輸出:[('h6',7),('h5',7),('h2',8),('h3',8), ('h7',15),('h9',24),('h4',30),('h8',54),('h1',72)] actual:[('h6',7) ,('h5',7),('h3',8),('h2',8),('h7',15),('h9',24),('h4',30),( 'h8',54),('h1',72)] result_code bubble_14錯誤1

注意h2 / 3混合...需要修復它...我的意思是不穩定

你現在能做的最好的事情就是明白為什么要切換這些物品。 每一步都打印哪些項目正在更改。 然后你可能會理解這種行為。

所以我去了,你沒有比較當前項目與列表中的下一項,你將當前項目與列表中的所有以下項目進行比較。 我所做出的改變可能會給你你想要的結果。

def bubble_sort_2nd_value(tuples_list):
    NEWLIST = []
    ITEM_MOVE = 0
    for i in tuples_list:
        NEWLIST.append(i)
    for i in range(len(NEWLIST)):
         for j in range(len(NEWLIST)-1):
             k=j+1
             if(NEWLIST[j][1] > NEWLIST[k][1]):
                 ITEM_MOVE = 1
                 NEWLIST[j],NEWLIST[k] = NEWLIST[k],NEWLIST[j]

    if (ITEM_MOVE == 0):
        print(tuples_list)
    else:
        print(NEWLIST)

tuples_list =  [('h2', 8), ('h4', 30), ('h6', 7), ('h8', 54), ('h1', 72), ('h3', 8), ('h5', 7), ('h7', 15), ('h7', 24)]

bubble_sort_2nd_value(tuples_list)

所以你所做的不是100%冒泡排序。 試試這個並告訴我你是否需要我解釋你為什么不工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM