python冒泡排序

作者: 4ffde5305e8f | 来源:发表于2017-02-09 17:11 被阅读61次

python冒泡排序
一种简单的排序算法。
比较相邻的两个元素,如果第一个比第二个大,那么就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
代码如下:

seq = [5,4,3,2,1]
print '排序前:',seq
for i in range(len(seq)-1): #这个循环 是循环次数,不是数组下标。
    for j in range(len(seq)-1-i): #这个循环才是真正的数组下标。
        if seq[j] > seq[j+1]:
            seq[j], seq[j + 1] = seq[j + 1], seq[j]

print '排序后:',seq

运行结果如下:


image.png

1. 第一个循环是循环 次数,多少个元素就循环len(seq)-1次,不是数组的下标。

2. 第二个循环才是真正的数组 下标 。循环len(seq)-i-1次。

下面解释一下 为什么第一个for 循环len(seq)-1次。
seq有五个元素,每次循环的时候,都拿一个元素对比其他元素。当对比到第四次的时候,其实整个数组已经是排序好的了

seq = [5,4,3,2,1]
print '排序前:',seq
for i in range(len(seq)): #这个循环 是循环次数,不是数组下标。
    for j in range(len(seq)-i-1): #这个循环才是真正的数组下标。
        if seq[j] > seq[j+1]:
            seq[j], seq[j + 1] = seq[j + 1], seq[j]
    print '排序进行时:第 %s 次循环后,排序好的数组 ' % (i + 1), seq
print '排序后:',seq

不减1的情况下 image.png

减1的情况下:


image.png

第二个for 循环len(seq)-1-i次
为什么要减去 i 呢?
我们看一下上面的运行结果图,
第一次循环时,最后一个元素是随机的元素,此时 i == 0,
第二次循环时,因为最后一个元素是最大的元素了,完全没必要在对比一次了,所以就把最后一个元素pass了,此时 i == 1,所以 len(seq)- 1 - i,剔除最后一个元素。
第三次循环,最后两个元素是整个数组最大的元素,所以最后两个元素完全没必要进行对比,所以pass掉最后两个元素,此时 i == 2,所以 len(seq)-1-i,剔除最后两个元素。
以此类推,直到循环结束。

相关文章

  • Java,Python冒泡排序

    Java冒泡排序 Python冒泡排序 Java九九乘法表 Python九九乘法表

  • 冒泡排序法

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

  • Python排序算法有哪几种?

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

  • 冒泡排序

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

  • python链表冒泡排序、二叉树顺序递归遍历、顺序表的快排

    一、python实现链表冒泡排序 - 冒泡排序的概念:冒泡排序是一种交换排序,它的基本思想是:两两比较相邻记录的关...

  • 排序算法详细代码实现

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

  • go排序之路(编程基础)

    对python排序有兴趣的可以去我之前的博客查找TopGun Python排序 冒泡排序 pupu.go(思路 每...

  • python实现冒泡排序(BubbleSort)

    python实现【冒泡排序】 算法原理介绍 冒泡排序是一种简单的排序算法。它的基本原理思想是重复地走访过要排序的数...

  • 七大排序算法的 Python

    本文用Python实现了插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序。 1、插...

  • 八大排序算法的 Python 实现(转)

    本文用Python实现了插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序。 1、插...

网友评论

    本文标题:python冒泡排序

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