0

タプルのリストを整数部分でソートするバブルソートアルゴリズムを書きます。

しかし、指定されたリストがすでにソートされている場合は None を返したいと思います。どうすればいいですか?

def bubble_sort_2nd_value(tuples_list):

    NEWLIST = []
    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]):
                 NEWLIST[j],NEWLIST[i] = NEWLIST[i],NEWLIST[j]


    print(NEWLIST)

tuples_list = [("h1",1),("h2",2),("h3", 3), ("hi" , 4)]

bubble_sort_2nd_value(tuples_list)
4

4 に答える 4

0

簡単な答えは、並べ替える前にリストが並べ替えられているかどうかを確認することです。これよりも簡単な解決策は他にありません。

または、アイテムが次のように移動されたかどうかを確認します。

def bubble_sort_2nd_value(tuples_list):

    NEWLIST = []
    itemMoved=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]):
                 itemMoved=1
                 NEWLIST[j],NEWLIST[i] = NEWLIST[i],NEWLIST[j]

    if(itemMoved==0): print("None")
    else: print(NEWLIST)

tuples_list = [("h1",1),("h2",2),("h3", 3), ("hi" , 4)]

bubble_sort_2nd_value(tuples_list)
于 2013-11-08T20:09:21.623 に答える
0

配列を変更したかどうかを確認し、変更された場合にのみ返します。

def bubble_sort_2nd_value(tuples_list):
    edited = False
    newlist = []
    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]):
                    edited = True
                newlist[j], newlist[i] = newlist[i], newlist[j]
    if edited:
       return newlist
于 2013-11-08T20:10:47.947 に答える
0
tuples_list = [("h1",1),("h2",2),("h3", 3), ("hi" , 4)]
sorted(tuples_list, key=lambda x: x[1])
于 2013-11-08T20:12:45.963 に答える