冒泡排序(数据结构)

本文详细介绍了冒泡排序的基本原理,通过两两比较元素并交换来达到排序的目的。冒泡排序的时间复杂度为O(n^2),是一种稳定的排序算法。文章还给出了冒泡排序的左移和右移过程实例,并提供了Python代码实现。通过阅读,读者可以理解冒泡排序的工作机制及其在实际中的应用。
摘要由CSDN通过智能技术生成

0x01 原理

​ 冒泡排序它通过两两比较相邻记录的关键字,如果发生逆序,则进行交换,从而使关键字小的记录如气泡一般逐渐往上漂浮(左移),或者使关键字大的记录如石块一样逐渐向下坠落(右移)。

0x02 时间复杂度

​ 冒泡排序的时间复杂度为 O ( n 2 n^2 n2) ,且是一个稳定排序,

0x03 例子

右移冒泡(图片来源于菜鸟教程)

在这里插入图片描述

题目:5,6,3,7,9,12,46,8

左移冒泡过程:

  • 5,6,3,7,9,12,8,45
  • 5,6,3,7,9,8,12,45
  • 5,6,3,7,8,9,12,45
  • 5,6,3,7,8,9,12,45
  • 5,6,3,7,8,9,12,45
  • 5,3,6,7,8,9,12,45
  • 3,5,6,7,8,9,12,45(完成一轮排序,后面继续循环)

0x04 代码实现

def buttle_sort(a):
    for i in range (1,len(a)):              #从第二个元素开始比较
        for j in range(i,0,-1):             #元素与前一个元素比较
            if (a[j] < a[j-1]):             #小于则交换
                mid = a[j]
                a[j] = a[j-1]
                a[j-1] = mid
            else:                           #提前结束循环,提高效率
                break
a = [9,6,3,1,8,9,22,75,36,95,12,45,20] 

print(a)
buttle_sort(a)
print(a)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值