冒泡排序
排序思想
冒泡排序,就是让较大的数慢慢往后排,较小的数慢慢往前排。就像水中冒泡一样。
算法描述
第一次,当然就是比较相邻两个元素(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。正常运行