使用冒泡排序列表排序(列表清单)

时间:2014-02-13 21:56:00

标签: python list sorting bubble-sort

我有这个分配,我必须把一个文本文件放到一个列表中,所以它最终看起来像这样:

[["Afghanistan",647500.0,25500100],["Albania",28748.0,2821977],...,["Zimbabwe",390580.0,12973808]]

所以由函数readcountries()定义的列表列表 我想根据列表列表中的一个参数(即国家/地区名称后面的第二个数字)对冒号进行排序(这是分配所需的)。

这是我到目前为止所拥有的

def bubblesort():
    Countries = readcountries()
    for i in range(0,len(Countries)):
        madeSwap = False
        for j in range (0,len(Countries)-(i+1)):
            if Countries[j][2] > Countries[j+1][2]:
                temp = Countries[j+1]
                Countries[j+1][2] = Countries[j][2]
                Countries[j] = temp
                madeSwap = True
            if not madeSwap:
                return

但是由于某些原因我没有得到任何类型的排序,我甚至无法看到排序后的列表。 欢迎任何帮助

1 个答案:

答案 0 :(得分:0)

问题在这里Countries[j+1][2] = Countries[j][2] 你必须用Countries[j+1] = Countries[j]替换

另外

你必须调用这个

if not madeSwap:
                return

在外面

并返回列表

def bubblesort():
        Countries = [["Afghanistan",647500.0,3],["Albania",28748.0,1],["Zimbabwe",390580.0,2]]
        for i in range(0,len(Countries)):
            madeSwap = False
            for j in range (0,len(Countries)-(i+1)):
                if Countries[j][2] > Countries[j+1][2]:
                    temp = Countries[j+1]
                    Countries[j+1] = Countries[j]
                    Countries[j] = temp
                    madeSwap = True
            if not madeSwap:
                return Countries
        return Countries

>>> bubblesort()
[['Afghanistan', 647500.0, 1], ['Zimbabwe', 390580.0, 2], ['Albania', 28748.0, 3]]