Python中的气泡排序,用于处理列表
代码很简单Python中的气泡排序,用于处理列表,python,bubble-sort,Python,Bubble Sort,代码很简单 def bubble_sort(l): for i in xrange(0, len(l)-1) : for n in xrange(0, len(l)) : if l[i] > l[i+1] : l[i], l[i+1] = l[i+1], l[i] lst = [[1, 8, 2], [3, 2, 5], [2, 13, 3], [2, 5, 5], [2, 5, 6], [5, 11, 6]
def bubble_sort(l):
for i in xrange(0, len(l)-1) :
for n in xrange(0, len(l)) :
if l[i] > l[i+1] :
l[i], l[i+1] = l[i+1], l[i]
lst = [[1, 8, 2], [3, 2, 5], [2, 13, 3], [2, 5, 5], [2, 5, 6], [5, 11, 6], [5, 5, 6]]
print(lst)
bubble_sort(lst)
print(lst)
结果:
[[1, 8, 2], [3, 2, 5], [2, 13, 3], [2, 5, 5], [2, 5, 6], [5, 11, 6], [5, 5, 6]]
[[1, 8, 2], [2, 13, 3], [2, 5, 5], [2, 5, 6], [3, 2, 5], [5, 5, 6], [5, 11, 6]]
排序不正确
为什么?您必须使用
n
作为索引变量,而不是i
。就这样,您一遍又一遍地比较相同的元素len(l)
次。试试这个:
def bubble_sort(l):
for i in xrange(0, len(l)) :
for n in xrange(0, len(l)-1) :
if l[n] > l[n+1] :
l[n], l[n+1] = l[n+1], l[n]
必须使用
n
作为索引变量,而不是i
。就这样,您一遍又一遍地比较相同的元素len(l)
次。试试这个:
def bubble_sort(l):
for i in xrange(0, len(l)) :
for n in xrange(0, len(l)-1) :
if l[n] > l[n+1] :
l[n], l[n+1] = l[n+1], l[n]
问题是您只进行了一次迭代,而在冒泡排序中,您应该反复迭代,直到不再有交换对为止。像这样:
def bubble_sort(l):
ok = False
while not ok:
ok = True
for i in range(len(l) - 1):
if l[i] > l[i+1]:
l[i], l[i+1] = l[i+1], l[i]
ok = False
问题是您只进行了一次迭代,而在冒泡排序中,您应该反复迭代,直到不再有交换对为止。像这样:
def bubble_sort(l):
ok = False
while not ok:
ok = True
for i in range(len(l) - 1):
if l[i] > l[i+1]:
l[i], l[i+1] = l[i+1], l[i]
ok = False
非常感谢~但是迭代的数量不能计数?@bloodynumen:while循环的数量从1(=已排序)到N(=按相反顺序排序)。非常感谢~但是迭代的数量不能计数?@bloodynumen:while循环的数量从1(=已排序)到N(=按相反顺序排序)。