冒泡排序

排序思想

冒泡排序,就是让较大的数慢慢往后排,较小的数慢慢往前排。就像水中冒泡一样。

算法描述

第一次,当然就是比较相邻两个元素(arr[0],arr[1]),如果前一个比后一个大,交换。

第二次,比较相邻两个元素(arr[1],arr[2])如果前一个比后一个大,交换。

...............

因此需要len[arr]-1次

相信上图你已经见了不下十遍了

举例

假设现在有一个列表,arr=[4,2,1,3]

开始排序:

第一轮

第一次:4和2比较,2较小,将2排到前面            [2,4,1,3]

第二次:4和1比较,1较小,将1排到前面            [2,1,4,3]

第三次:4和3比较,3较小,将3排到前面            [2,1,3,4]

经过第一轮排序你会发现最大的数已经被沉到最后了~~~~~

但是还是没有排完,开始第二轮排序

第二轮

第一次:2和1比较,1较小,将1排到前面            [1,2,3,4]

第二次:2和3比较,3较大,不用动                      同上

第三次:3和4比较,4较大,不用动                      同上

经过这一次排序你会发现已经排完了~~~

代码

1 for i in range(len(arr)):
2     for j in range(i+1):
3         if arr[i] < arr [j]:
4             arr[i],arr[j] = arr[j],arr[i]
5 print(arr)

测试版代码

for i in range(len(arr)):
    for j in range(i+1):
        if arr[i] < arr [j]:
            print(arr)
            arr[i],arr[j] = arr[j],arr[i]
print(arr)
测试版~~~

测试

我们拿测试代码测试。

测试列表:9,1,6,4,3,8,7,2

[9, 1, 6, 4, 3, 8, 7, 2]
[1, 9, 6, 4, 3, 8, 7, 2]
[1, 6, 9, 4, 3, 8, 7, 2]
[1, 4, 9, 6, 3, 8, 7, 2]
[1, 4, 6, 9, 3, 8, 7, 2]
[1, 3, 6, 9, 4, 8, 7, 2]
[1, 3, 4, 9, 6, 8, 7, 2]
[1, 3, 4, 6, 9, 8, 7, 2]
[1, 3, 4, 6, 8, 9, 7, 2]
[1, 3, 4, 6, 7, 9, 8, 2]
[1, 3, 4, 6, 7, 8, 9, 2]
[1, 2, 4, 6, 7, 8, 9, 3]
[1, 2, 3, 6, 7, 8, 9, 4]
[1, 2, 3, 4, 7, 8, 9, 6]
[1, 2, 3, 4, 6, 8, 9, 7]
[1, 2, 3, 4, 6, 7, 9, 8]
[1, 2, 3, 4, 6, 7, 8, 9]

ok。正常运行

posted on 2021-02-20 12:34  yuze2020  阅读(46)  评论(0编辑  收藏  举报

导航