美文网首页
Python 冒泡排序

Python 冒泡排序

作者: 倔强的潇洒小姐 | 来源:发表于2017-09-01 15:30 被阅读80次
    百度百科对冒泡排序的算法原理描述:

    1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。
    2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
    3、针对所有的元素重复以上的步骤,除了最后一个。
    4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较

    源代码:
    a = [500, 432, -23, 73, 98, 23, -765, 11, 0, 69, 4]
    b = len(a) - 1
    while b:
        for i in range(b):
            j = i + 1
            if a[i] > a[j]:
                a[i], a[j] = a[j], a[i]
        b -= 1       # b = b -1
        print(a)     # 需注意print的缩进位置,输出每一次遍历后的结果
    # print(a)     # 输出最终结果
    
    输出每次遍历结果.png
    其中 a[k], a[l] = a[l], a[k] 可以改成 c = a[k], a[k] = a[l], a[l ] =c,c相当于临时变量
    另外代码还可以进行优化,将条件 b 放到 for 循环中
    for i in range(b, 0, -1)---------含义:b-0是范围,每次循环结束后减1
    调试过程.png

    总结

    其实算法不难,先理清思路问题就变得简单了,然后就可以尝试着输出代码了,debug 是个很好的帮手,一步步调试看数据是如何变化的,可以更好的理解程序是怎么实现这段代码的

    请思考:如何一行代码搞定(顺序 or 倒序显示)



    公布答案(可以复制代码到 IDE 中执行查看结果)

    print(sorted(a))   #  顺序
    print(sorted(a, reverse=True))   # 倒序
    

    注解:
    sorted函数 不会改变列表本身(可理解为先复制列表,再顺序整理),参数 reverse 用于逆序排序

    相关文章

      网友评论

          本文标题:Python 冒泡排序

          本文链接:https://www.haomeiwen.com/subject/enxkjxtx.html