冒泡排序是这样吗?
来源:2-11 列表的增删改查操作
幽之冥
2019-10-28 22:26:01
我自己敲的,运行结果是对的,不过是不是冒泡排序。我就不知道了
numbers = [28,13,54,42,56,33,89,31]
i=0
while i<len(numbers):
j=0
while j<i:
if numbers[i]>numbers[j]:
n=numbers[i]
numbers[i]=numbers[j]
numbers[j]=n
j+=1
i+=1
print(numbers)
1回答
同学你好:
同学的做法是伪冒泡排序。
冒泡排序时重复的遍历列表,每次遍历相邻的两个元素。01 12 23 34 这样的去进行两数之间进行比较。
按照同学的代码进行修改。
第一次循环:
28,13,54,42,56,33,89,31
28,54,13,42,56,33,89,31
28,54,42,13,56,33,89,31
28,54,42,56,13,33,89,31
28,54,42,56,33,13,89,31
28,54,42,56,33,89,13,31
28,54,42,56,33,89,31,13
第二次循环:
54,28,42,56,33,89,31,13
54,42,28,56,33,89,31,13
54,42,56,28,33,89,31,13
54,42,56,33,28,89,31,13
54,42,56,33,89,28,31,13
54,42,56,33,89,31,28,13
依次类推,修改同学的方法:
numbers = [28,13,54,42,56,33,89,31] i=0 while i<len(numbers): j=0 while j<len(numbers)-i-1: print(j, j+1) print(numbers[j],numbers[j+1]) if numbers[j]<numbers[j+1]: numbers[j+1], numbers[j] = numbers[j],numbers[j+1] j+=1 i+=1 print(numbers) print(numbers)
同学可以参考一下使用for循环的做法。
numbers = [28,13,54,42,56,33,89,31] for i in range(len(numbers)): for j in range(len(numbers)-i-1): print(j,j+1) if numbers[j+1]>numbers[j]: numbers[j+1], numbers[j] = numbers[j], numbers[j+1] print(numbers)
如果我解决了同学的问题,请采纳!学习愉快^_^。
相似问题