python3.3冒泡排序:如果列表已经排序,则返回None

时间:2013-11-08 20:07:31

标签: python

我写了一个冒泡排序算法,用整数部分来整理元组列表。

但是如果给定列表已经排序,我想返回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 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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

答案 2 :(得分:0)

tuples_list = [("h1",1),("h2",2),("h3", 3), ("hi" , 4)]
sorted(tuples_list, key=lambda x: x[1])

答案 3 :(得分:0)

您可以判断列表是否按以下内容排序:

#!/usr/bin/python3

def is_sorted(list_):
    result = True
    for element1, element2 in zip(list_, list_[1:]):
        if element1 <= element2:
            # this pair compares favorably
            pass
        else:
            result = False
            break

    return result

但是,如果这不是学术练习,你可能应该使用像sorted(list_,key = operator.itemgetter(1))这样的东西 - 因为它更容易,而且因为Python的内置排序非常好。

HTH