我正在尝试创建一个自定义排序方法,在该方法中,我采用不按数字顺序排列的列表,并将列表从最低到最高顺序排列。
该程序应采用以下列表...
arr = [1, 2, 3, 1, 4]
*和打印如下... *
arr = [1, 1, 2, 3, 4]
目前,我的代码是......
def sort(list):
for i in range(1, len(list)):
if list[i] < list[i - 1]:
temp = list[i - 1]
list[i - 1] = list[i]
list[i] = temp
print arr
sort(arr)
我的输出就是这个......
[1, 2, 1, 3, 4]
好像该函数在列表中运行一次,重新排序数字一次并在它们全部按数字顺序停止之前停止。我如何让它在列表中运行多次,以便将所有数字放在应该的位置?
答案 0 :(得分:3)
你为什么不这样做:
def sort_list(my_list):
print sorted(my_list)
def main():
arr = [1, 3, 2, 5, 4]
sort_list(arr)
if __name__ == "__main__":
main()
这将有以下输出:
[1, 2, 3, 4, 5]
如果您不想使用内置功能,请执行以下操作:
def sort_list(new_list):
data_list = [1, 3, 2, 5, 4]
while data_list:
minimum = data_list[0] # arbitrary number in list
for x in data_list:
if x < minimum:
minimum = x
new_list.append(minimum)
data_list.remove(minimum)
print new_list
def main():
new_list = []
sort_list(new_list)
if __name__ == "__main__":
main()
这将具有相同的输出:
[1, 2, 3, 4, 5]