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、教学示例(算法原理直观)

相关推荐
稚南城才子,乌衣巷风流1 小时前
ST 表(Sparse Table)算法详解:原理、实现与应用
算法
hold?fish:palm1 小时前
9 找到字符串中所有字母异位词
c++·算法·leetcode
Sw1zzle1 小时前
算法入门(六):贪心算法 - 基础入门(Leetcode 121/455/860/376/738)
算法·leetcode·贪心算法
青山木1 小时前
Hot 100 --- 岛屿数量
java·数据结构·算法·leetcode·深度优先·广度优先
不会就选b2 小时前
算法日常・每日刷题--<归并排序>1
数据结构·算法
危桥带雨2 小时前
排序算法(快排、归并、计数、基数排序)
数据结构·算法·排序算法
啦啦啦啦啦zzzz2 小时前
算法:回溯算法
c++·算法·leetcode
会飞的小新2 小时前
C 标准库之 <fenv.h> 详解与深度解析
c语言·开发语言·microsoft
IT探索2 小时前
Linux 查找文件指令总结
linux·算法