【发布时间】:2012-03-01 13:15:35
【问题描述】:
算法对除第一个数字之外的所有数字进行排序,并将其设置为最后一个。请帮忙!
def bubbleSort(numbers): # Bubble Sort Algorithm
numbers = list(numbers)
i = 0
j = 0
for i in range(len(numbers)):
for j in range(len(numbers) - i):
if numbers[j] < numbers[j-1]:
temp = numbers[j-1]
numbers[j-1] = numbers[j]
numbers[j] = temp
print numbers
print numbers
【问题讨论】:
-
快速说明:您不需要明确设置
i = 0和j = 0。这是for循环的一部分,它表示“让i假设range(n)-0,1,2,3,4...n中的值。 -
另请注意,交换两个数字可以更好地表示为
a, b = b, a,如numbers[j-1], numbers[j] = numbers[j], numbers[j-1]。见python.net/~goodger/projects/pycon/2007/idiomatic/handout.html(所有python程序员必读。) -
最后,请注意
numbers = list(numbers)在传入非列表的参数时可能会产生奇怪的效果。例如:list("foobar")给出['f', 'o', 'o', 'b', 'a', 'r'],list( {'key1':'value1','key2':'value2'} )给出['key2', 'key1']。如果你想确保你的函数得到一个列表,最好测试条件type (numbers) is list。