美文网首页
Python 排序算法之冒泡排序(2/8)

Python 排序算法之冒泡排序(2/8)

作者: Paycation | 来源:发表于2018-05-11 20:32 被阅读91次

冒泡排序 bubble sort

思想:“冻结”列表的长度,然后进行遍历,把最大数推到最后,然后将“冻结”的长度减1,重复此操作。
冒泡排序原理是从第一项开始,将第一项 a 和第二项 b 比较,如果 a < b,则不动,否则交换两者的顺序。然后将第二项 b 和第三项 c 比较,和前面是一样的。重复此过程直到最后一项。

def bubble_sort(lst):
    length = len(lst) #1
    while length > 0: #2
        for i in range(length-1): #3
            if lst[i] > lst[i+1]:
                lst[i], lst[i+1] = lst[i+1], lst[i] #4
                print(lst) #5
        length -= 1 #6
    return lst

#1 可以理解这是未经排序的部分的长度。
#2 当这个未经排序的部分长度为 0 时,结束循环,排序完成。
#3 从第一项开始进行两两比较。为什么只循环到 length-1,因为是 lst[i] 和后一项 lst[i+1] 比较,如果 lst[i+1] 是最后一项,也就是要满足 i+1 <= length-1,否则 IndexError。
#4 是一个 Pythonic 的写法。传统的换值写法是:

temp = lst[i]
lst[i] = lst[i+1]
lst[i+1] = temp

显然 Python 的写法更加简洁明了。
#5 用于观察列表的每次变化。
#6 冒泡法的特点是两两比较,大的数往后移动,那么一轮遍历下来,最大的数就到了最后,那么第二轮就不必再遍历它。
我们来看变化过程:

[5, 4, 3, 2, 1] # input
-----------------
[4, 5, 3, 2, 1] 
[4, 3, 5, 2, 1]
[4, 3, 2, 5, 1]
[4, 3, 2, 1, 5]
[3, 4, 2, 1, 5]
[3, 2, 4, 1, 5]
[3, 2, 1, 4, 5]
[2, 3, 1, 4, 5]
[2, 1, 3, 4, 5]
[1, 2, 3, 4, 5]

可以明显看到 5 被一点点推到右边去,像冒泡一样。
后面的数字以此类推。
总而言之就是,每一次遍历整个表,都会把最大的数推到最后,然后忽略最后一项,继续遍历剩下的元素。直到剩下 0 个元素为止。

相关文章

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

  • 七大排序算法之冒泡排序

    七大排序算法之冒泡排序 @(算法笔记)[排序算法, 冒泡排序, C++实现] 冒泡排序介绍 冒泡排序是七大排序算法...

  • 冒泡排序法

    python排序算法之冒泡排序 首先说一下冒泡排序原理: 冒泡排序(Bubble Sort),是一种计算机科学领域...

  • Python排序算法有哪几种?

    python排序算法有哪些?python中常见的排序算法有:插入排序、选择排序、冒泡排序、快速排序、归并排序、希尔...

  • 排序算法详细代码实现

    算法分类 算法时间复杂度 选择排序 插入排序 C++实现 Python实现 冒泡排序 Python实现 归并排序 ...

  • 算法-冒泡排序

    算 法:冒泡排序算法时间复杂度: 冒泡排序算法概述 冒泡排序伪代码 冒泡排序实现 冒泡排序算法概述 冒泡排...

  • Python 排序算法之冒泡排序(2/8)

    冒泡排序 bubble sort 思想:“冻结”列表的长度,然后进行遍历,把最大数推到最后,然后将“冻结”的长度减...

  • python 排序算法

    文章概述 介绍各大常用经典的排序算法和效率,以及python实现常用算法(冒泡排序,选择排序,快速排序,插入排序)...

  • Python一行代码实现快速排序

    上期文章排序算法——(2)Python实现十大常用排序算法为大家介绍了十大常用排序算法的前五种(冒泡、选择、插入、...

  • 冒泡排序

    Python 冒泡排序 冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,...

网友评论

      本文标题:Python 排序算法之冒泡排序(2/8)

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