冒泡排序是这样吗?

来源: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回答

好帮手乔木

2019-10-29

同学你好:

同学的做法是伪冒泡排序。

冒泡排序时重复的遍历列表,每次遍历相邻的两个元素。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)

如果我解决了同学的问题,请采纳!学习愉快^_^。

0

0 学习 · 8160 问题

查看课程