冒泡排序的原理

冒泡排序是一种简单的排序算法,它通过重复地遍历待排序的列表,比较相邻的元素并交换它们的位置来实现排序。具体原理如下:

冒泡排序的基本思想

冒泡排序的核心思想是通过相邻元素的比较和交换,将较大的元素逐步"冒泡"到列表的末尾。每一轮遍历都会确定一个最大元素的位置,经过多轮遍历后,整个列表就会变得有序。

冒泡排序的步骤

  1. 从列表的第一个元素开始,依次比较相邻的两个元素。
  2. 如果前一个元素大于后一个元素,则交换它们的位置。
  3. 继续遍历列表,直到最后一个元素。
  4. 重复上述过程,每次遍历都会减少一个需要比较的元素,因为每次遍历后,最大的元素已经"冒泡"到正确的位置。
  5. 当没有元素需要交换时,排序完成。

冒泡排序的代码示例

python 复制代码
def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        # 标记是否发生交换
        swapped = False
        for j in range(0, n-i-1):
            if arr[j] > arr[j+1]:
                # 交换元素
                arr[j], arr[j+1] = arr[j+1], arr[j]
                swapped = True
        # 如果没有发生交换,说明列表已经有序,提前退出
        if not swapped:
            break
    return arr

# 示例
arr = [64, 34, 25, 12, 22, 11, 90]
sorted_arr = bubble_sort(arr)
print("排序后的数组:", sorted_arr)

冒泡排序的时间复杂度

冒泡排序的时间复杂度为 O(n^2),其中 n 是列表的长度。在最坏的情况下,需要进行 n*(n-1)/2 次比较和交换。尽管冒泡排序的效率较低,但由于其实现简单,常被用于教学或小规模数据的排序。

相关推荐
恋猫de小郭1 小时前
Compose Hot Reload 为什么只支持桌面 JVM,它和 Live Edit 又有什么区别?
android·前端·flutter
10年前端老司机2 小时前
Vue3项目中使用vue-draggable-plus实现拖拽需求简直不要太丝滑
前端·javascript·vue.js
&白帝&6 小时前
前端实现截图的几种方法
前端
动能小子ohhh7 小时前
html实现登录与注册功能案例(不写死且只使用js)
开发语言·前端·javascript·python·html
小小小小宇7 小时前
大文件断点续传笔记
前端
Jimmy7 小时前
理解 React Context API: 实用指南
前端·javascript·react.js
保持学习ing7 小时前
SpringBoot电脑商城项目--显示勾选+确认订单页收货地址
java·前端·spring boot·后端·交互·jquery
李明一.8 小时前
Java 全栈开发学习:从后端基石到前端灵动的成长之路
java·前端·学习
观默8 小时前
我用AI造了个“懂我家娃”的育儿助手
前端·人工智能·产品
crary,记忆8 小时前
微前端MFE:(React 与 Angular)框架之间的通信方式
前端·javascript·学习·react.js·angular