C语言---排序算法1---冒泡排序法

文章目录

算法原理

冒泡排序(Bubble Sort)是一种基础的交换排序算法。其核心思想是重复比较相邻元素,若顺序错误则交换,通过多轮遍历将最大值逐步"冒泡"到数组末端。算法结束条件为某轮遍历未发生任何交换,表明数组已有序。

代码实现

bash 复制代码
#include <stdio.h>

// 冒泡排序函数
void bubbleSort(int arr[], int n) {
    if (n <= 1) return; // 边界条件处理

    for (int i = 0; i < n - 1; i++) { // 外层循环控制轮数
        int swapped = 0; // 优化标记
        for (int j = 0; j < n - i - 1; j++) { // 内层循环比较相邻元素
            if (arr[j] > arr[j+1]) {
                // 交换元素
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
                swapped = 1; // 标记发生交换
            }
        }
        // 若本轮无交换则提前终止
        if (!swapped) break;
    }
}

// 测试代码
int main() {
    int arr[] = {64, 34, 25, 12, 22, 11, 90};
    int n = sizeof(arr) / sizeof(arr[0]);

    bubbleSort(arr, n);
    printf("排序结果: ");
    for (int i=0; i < n; i++)
        printf("%d ", arr[i]);
    return 0;
}

执行过程示例

以数组[5, 1, 4, 2, 8]为例:

bash 复制代码
第1轮:比较交换后 → [1,4,2,5,8](5上浮)
第2轮:比较交换后 → [1,2,4,5,8](4上浮)
第3轮:无交换 → 提前终止

适用场景

1、小规模数据排序

2、内存受限环境

3、教学示例(算法原理直观)

相关推荐
董董灿是个攻城狮11 小时前
AI视觉连载8:传统 CV 之边缘检测
算法
RuoZoe16 小时前
重塑WPF辉煌?基于DirectX 12的现代.NET UI框架Jalium
c语言
AI软著研究员18 小时前
程序员必看:软著不是“面子工程”,是代码的“法律保险”
算法
FunnySaltyFish19 小时前
什么?Compose 把 GapBuffer 换成了 LinkBuffer?
算法·kotlin·android jetpack
颜酱20 小时前
理解二叉树最近公共祖先(LCA):从基础到变种解析
javascript·后端·算法
地平线开发者1 天前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶
董董灿是个攻城狮1 天前
大模型连载2:初步认识 tokenizer 的过程
算法
地平线开发者2 天前
地平线 VP 接口工程实践(一):hbVPRoiResize 接口功能、使用约束与典型问题总结
算法·自动驾驶
罗西的思考2 天前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
HXhlx2 天前
CART决策树基本原理
算法·机器学习