python3实现冒泡排序(Ubuntu18环境)
1、冒泡是常用的排序方法。
实现方法:
1:相邻的两个元素进行比较,然后把较大的元素放到后面;
2:一趟比较完后最大的元素位于了最后一个位置,如此循环。
冒泡算法要遍历n-1趟,时间复杂度较高。
例如
输入值序列 [3, 5, 1, 8, 10]
第一趟:
[3, 5, 1, 8, 10]
[3, 1, 5, 8, 10]
[3, 1, 5, 8, 10]
[3, 1, 5, 8, 10]
第二趟:
[1, 3, 5, 8, 10]
[1, 3, 5, 8, 10]
[1, 3, 5, 8, 10]
第三趟:
[1, 3, 5, 8, 10]
[1, 3, 5, 8, 10]
第四趟:
[1, 3, 5, 8, 10]
(其实第二趟就已经排序完毕,因此可以优化)

2、具体实现:
#!/usr/bin/env python
#-*- coding: utf-8 -*-
#冒泡排序
import os
import random
def bubSort(mbub):
length = len(mbub)
print("元素数量%d" % (length))
for i in range(length - 1):
print("第%d趟开始" % (i))
for j in range(length - i - 1):
# j表示每趟比较的元素范围,每趟排好一个元素,下一趟元素要减去i
print(" 当前元素坐标={} ".format(j), end="")
print(mbub, end="")
print("==> ", end="")
if mbub[j] > mbub[j + 1]:
mbub[j], mbub[j + 1] = mbub[j + 1], mbub[j]
print(mbub, end="")
print(" (交换元素坐标:%d %d 交换元素数值:%d %d)" % (j, j + 1, mbub[j], mbub[j + 1]))
else:
print(mbub, end="")
print(" (未交换)")
print("第%d趟 输出:" % (i), end="")
print(mbub)
#调用程序
if __name__ == '__main__':
# 定义随机数
num = 5
#生成随机列表
current_Num = [random.randint(1,num) for i in range(num)]
# current_Num = [3,5,1,8,10]
print("初始列表:")
print(current_Num)
bubSort(current_Num)


3、运行后结果如下:
第一趟: n-1比对

4、第二趟:n-2比对

5、第三趟: n-3比对

6、第四趟;n-4比对
完成n-1比对,结束并输出结果!
和分析一致。
