冒泡、选择、插入排序简介(Python)

冒泡排序(Bubble Sort)

冒泡排序通过重复遍历列表,比较相邻元素并交换位置,将较大元素逐渐"冒泡"到末尾。
时间复杂度 :平均和最坏情况为 O(n\^2),最好情况(已排序)为 O(n)。
代码实现:

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

选择排序(Selection Sort)

选择排序每次遍历未排序部分,找到最小元素并交换到已排序部分的末尾。
时间复杂度 :始终为 O(n\^2)。
代码实现:

python 复制代码
def selection_sort(arr):
    n = len(arr)
    for i in range(n):
        min_idx = i
        for j in range(i+1, n):
            if arr[j] < arr[min_idx]:
                min_idx = j
        arr[i], arr[min_idx] = arr[min_idx], arr[i]
    return arr

插入排序(Insertion Sort)

插入排序将未排序元素逐个插入到已排序部分的正确位置,适合小规模或部分有序数据。
时间复杂度 :平均和最坏为 O(n\^2),最好为 O(n)。
代码实现:

python 复制代码
def insertion_sort(arr):
    n = len(arr)
    for i in range(1, n):
        key = arr[i]
        j = i - 1
        while j >= 0 and key < arr[j]:
            arr[j+1] = arr[j]
            j -= 1
        arr[j+1] = key
    return arr

总结:

  • 冒泡排序:简单但效率低,适合教学或小数据集。
  • 选择排序:交换次数少,但不稳定。
  • 插入排序:对部分有序数据高效,常作为高级算法(如快速排序)的子过程。
相关推荐
2601_967987374 分钟前
Sqlite参考手册
数据库·python·sqlite·api·教程
笑容掩饰我的失落15 分钟前
区块链从小白到精通(七):Solidity 语法精讲——数据类型、函数、修饰器与事件
算法·区块链·php·智能合约·哈希算法
用户0190275816141 分钟前
A 股到价提醒机器人:AlphaFeed + 飞书/钉钉 Webhook
python
特立独行的猫A1 小时前
Ionic + 仓颉语言的 cj-tauri 开发框架实战:开发精美移动端 APP
java·后端·python
Pniubi1 小时前
力扣24. 两两交换链表中的节点(递归)
算法·leetcode·链表
高洁011 小时前
数据同化与动态状态估计:让孪生持续贴合现实
人工智能·python·深度学习·transformer·迁移学习
通信仿真爱好者2 小时前
第【139】期--基于深度学习的OFDM信道估计方法研究--python完整代码
python·深度学习·ofdm·信道估计
꧁细听勿语情꧂2 小时前
直接选择排序,堆排序,冒泡排序,递归快速排序、hoare版本、挖坑法、lomuto前后指针,非递归快速排序
c语言·开发语言·数据结构·算法
威哥爱编程2 小时前
模拟面试智能体开发实战 07:答完一题就点评一题,结构化输出给分建议,让每道题都变成复盘
python·agent·harmonyos
cpolar技术支持2 小时前
中文文件名排序跟拼音对不上:os.listdir 返回的是文件系统顺序,三个中文名按字节排结果正好相反
python·文件系统·cpolar·编码·排序