Python选择排序程序

0 投票
2 回答
961 浏览
提问于 2025-04-17 20:27

这个程序本来是用来排序的,但不知道为什么,它没有对我提供的文件进行排序,只是把数字原封不动地输出了。希望能得到一些帮助。谢谢!

filename=input('Enter file path:')
file = open(filename, 'r')
alist = [(line) for line in file.readlines()]
print(alist)

def selectionSort(alist):
    for index in range(0, len(alist)):
        ismall = index
        for i in range(index,len(alist)):
            if alist[ismall] > alist[i]:
                ismall = i
        alist[index], alist[ismall] = alist[ismall], alist[index]
    return alist 

2 个回答

0

你只是定义了一个方法,但还需要在某个地方调用它。我在你的代码上做了一些修改并进行了测试,结果是可以正常工作的。这里是修改后的代码:最后两行实际上是调用了你创建的代码:(注意缩进哦)

alist = [42,54,2,45,6,125,32]
print(alist)

def selectionSort(alist):
    for index in range(0, len(alist)):
        ismall = index
        for i in range(index,len(alist)):
            if alist[ismall] > alist[i]:
                ismall = i
        alist[index], alist[ismall] = alist[ismall], alist[index]
    return alist

newList = selectionSort(alist)
print newList
1

你没有调用这个函数!

def selectionSort(alist):
    for index in range(0, len(alist)):
        ismall = index
        for i in range(index,len(alist)):
            if alist[ismall] > alist[i]:
                ismall = i
        alist[index], alist[ismall] = alist[ismall], alist[index]

filename=input('Enter file path:')
file = open(filename, 'r')
alist = file.readlines()

# Call the function!
selectionSort(alist)
print(alist)

你已经告诉Python selectionSort 是什么意思,但你还没有告诉它要排序什么。你需要调用 selectionSort(alist) 来真正执行排序。

另外,你想要的排序顺序可能和你告诉Python的顺序不一样。alist 是一个字符串列表,所以你是在告诉Python按照字典顺序来排序这个列表。如果这些数据应该被当作整数来处理,你需要把数据转换成整数:

alist = [int(line) for line in file]

(另外,由于 selectionSort 会修改它操作的列表,所以最好不要返回这个列表。如果你返回它,会给人一种创建了一个新的、已排序的列表的印象。)

撰写回答