输出气泡排序

时间:2015-11-16 23:47:48

标签: python bubble-sort

我有一个名为countries.txt的列表,按名称,面积(以km2为单位),人口(例如["Afghanistan", 647500.0, 25500100])列出所有国家/地区。

def readCountries(filename):

    result=[]
    lines=open(filename)

    for line in lines:
        result.append(line.strip('\n').split(',\t'))
    for sublist in result:
        sublist[1]=float(sublist[1])
        sublist[2]=int(sublist[2])

我正在尝试根据每个国家/地区使用冒泡排序对列表进行排序:

>> c = countryByArea(7)
>>> c 

>>["India",3287590.0,1239240000]

在输入参数时应返回第n个最大区域。

我有这个,但我不确定如何输出信息

def countryByArea(area):
    myList=readCountries('countries.txt')

    for i in range(0,len(list)):
        for j in range(0,len(list)-1):
            if list[j]>list[j+1]:
                temp=list[j]
                list[j]=list[j+1]
                list[j+1]=temp

1 个答案:

答案 0 :(得分:0)

首先,实现一个通用的冒泡排序方法。这是一个正确的冒泡排序算法实现...我相信你可以在http://rosettacode.org

找到其他实现
def bubble_sort(a_list,a_key):
    changed=True
    while changed:
        changed = False
        for i in range(len(a_list)-1):
            if a_key(a_list[i]) > a_key(a_list[i+1]):
                a_list[i],a_list[i+1] = a_list[i+1],a_list[i]
                changed = True

然后简单地传递一个表示要排序的数据的键函数(在这种情况下,每行的中间值或索引

import csv    
def sort_by_area(fname):
     with open(fname) as f:
        a = list(csv.reader(f))
     bubble_sort(a,lambda row:int(row[1]))
     return a

a = sort_by_area("a_file.txt")    
print a[-7] #the 7th largest by area

你可以把这个信息结合起来完成你的任务......但是这个问题你应该问同学或老师的帮助......