Python选择排序程序
这个程序本来是用来排序的,但不知道为什么,它没有对我提供的文件进行排序,只是把数字原封不动地输出了。希望能得到一些帮助。谢谢!
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
会修改它操作的列表,所以最好不要返回这个列表。如果你返回它,会给人一种创建了一个新的、已排序的列表的印象。)