python3实现冒泡排序(Ubuntu18环境)

2025-10-30 22:40:09

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]

(其实第二趟就已经排序完毕,因此可以优化)

python3实现冒泡排序(Ubuntu18环境)

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)

python3实现冒泡排序(Ubuntu18环境)

python3实现冒泡排序(Ubuntu18环境)

3、运行后结果如下:

第一趟: n-1比对

python3实现冒泡排序(Ubuntu18环境)

4、第二趟:n-2比对

python3实现冒泡排序(Ubuntu18环境)

5、第三趟: n-3比对 

python3实现冒泡排序(Ubuntu18环境)

6、第四趟;n-4比对

完成n-1比对,结束并输出结果!

和分析一致。

python3实现冒泡排序(Ubuntu18环境)

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢