• python --- 冒泡排序算法


    别想太多了,这个冒泡排序就是我们脑海中想到的那个冒泡,就好像是气泡一样,较小的元素比较轻,从而要往上浮出来,

    冒泡排序算法、

           要对‘气泡’序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即‘轻’的元素在下面,就交换它们的位置。显然,处理一遍之后,‘最轻’的元素就浮到了最高的位置;处理两遍之后,‘第二轻的元素’就浮到了第二高的位置。在做第二遍处理时,由于最高位置上的元素已是‘最轻’的元素,所以就不用检查了。一般的,第i遍处理时,不必检查第i高位置以上的元素,因为经过前面i - 1遍的处理,它们已经正确的排好序了。

    所以说了这么多干巴巴的理论知识,现在就来点实际的:

    1 def bulle_sort(lst):
    2     for i in range(len(lst)):
    3         for j in range(i + 1, len(lst)):
    4             if lst[i] > lst[j]:
    5                 lst[i], lst[j] = lst[j], lst[i]
    6     return lst
    7 
    8 
    9 print(bulle_sort([3, 2, 4, 1, 7]))

    要记住列表索引顾头不顾尾

    要理解这个冒泡排序关键点就在于其中的两个for循环

    1. 外层循环起始值:i = 0
    2. 内层循环起始值:j = 1

    最外层的控制了第一个数,然后就时通过第二层循环不断的和后面的数的一个比较的过程,通过这个过程,在第二个for循环内部调用if语句,将‘最轻’的气泡,提到最上面来

    当第一个气泡确定之后,就可以通过循环来确定第二个气泡的位置,然后再利用if语句给调在第二高的位置

    然后就是一个周而复始的过程

    在这里要注意:

          外层循环位置:是从头开始循环,然后一直到末尾

          内层循环位置:内层随着外层的循环而循环,所以就不用循环外层的元素,所以要在外层的基础上加上一

     

  • 相关阅读:
    1. Redis是属于多线程还是单线程?不同版本之间有什么区别?
    揭开操作系统之内存管理的面纱
    《Cython系列》3. 深入Cython(内含Python解释器相关知识以及源码分析)
    《Cython系列》2. 编译并运行Cython代码
    《Cython系列》1. Cython概要
    python执行lua代码
    lua语言(2):闭包、模式匹配、日期、编译、模块
    100个网络基础知识
    str list tuple dict
    基础算法
  • 原文地址:https://www.cnblogs.com/tulintao/p/10749543.html
Copyright © 2020-2023  润新知