冒泡排序( Bubble Sort, Short Bubble Sort)

本文详细介绍了冒泡排序的工作原理,通过Python代码展示了冒泡排序的过程,并提供了冒泡排序的效率分析。此外,还引入了短冒泡排序的概念,当列表已经有序时能提前终止排序,提高了排序效率。最后给出了短冒泡排序的Python实现,有助于理解排序算法的优化思路。
摘要由CSDN通过智能技术生成

冒泡排序通过多次遍历列表,与之相邻的元素进行比较,将不合乎顺序的元素进行交换,每一次遍历都将下一个最大值放在正确的位置上,每一个元素通过冒泡的形式找到属于自己的一个位置。

为了进一步展示排序过程中元素的位置变化,将示意图展示如下:
Bubble Sort
Python代码编写如下:

def bubblesort( sequence):
    for t in range(len(sequence)-1, 0, -1):
        for i in range(t):
            if sequence[i]>sequence[i+1]:
                temp = sequence[i]
                sequence[i] = sequence[i+1]
                sequence[i+1] = temp
    return sequence
ex_seq = [12, 43,13, 45, 8, 34, 9, 18, 20, 11]
result = bubblesort(ex_seq)

result 结果为:[8, 9, 11, 12, 13, 18, 20, 34, 43, 45]

在交换两个元素的位置时,通常需要一个临时变量来进行存储,Python允许同时赋值,例如:a, b = b, a 利用这个特性,我们可以只使用一条一句完成元素的交换。

sequence[i], sequence[i+1] = sequence[i+1], sequence[i]

假设列表中含有 n 个元素,那么第一轮将会遍历 n-1 次,第二轮将会遍历 n-2 次,依次类推,知道遍历结束为止。总的比较次数为1到 n-1 个整数之和,时间复杂度即为 O ( n 2 ) O(n^2) O(n2)。上
q u e r y   t i m e s = n ( n − 1 ) 2 = 1 2 n 2 − 1 2 n query\,times = \frac{n(n-1)}{2} = \frac{1}{2}n^2-\frac{1}{2}n querytimes=2n(n1)=21n221n

冒泡排序通常被认为是效率最低的一个排序算法,因为他在确定最终位置之前必须交换元素,另外我们发现,如果在某一轮遍历中没有发生元素的交换,就这一表明列表以及有序,可以结束遍历,这种排序也成为短冒泡,代码如下所示:

def short_bubblesort (sequence):
    sort_times = len(sequence) -1
    flag_exchange = True
    while sort_times>0 and flag_exchange:
        flag_exchange = False
        for i in range(sort_times):
            if sequence[i]>sequence[i+1]:
                flag_exchange = True
                sequence[i], sequence[i+1] = sequence[i+1], sequence[i]
        sort_times -= 1    
    return sequence
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值