C语言基础数组作业(冒泡算法)

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

void bubbleSort(int arr[], int size) {
    for (int i = 0; i < size - 1; i++) {
        for (int j = 0; j < size - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                // 交换元素
                int temp = arr[j];//创建临时变量temp,保存arr[j]的值
                arr[j] = arr[j + 1];//将arr[j+1]的值赋给arr[j]
                arr[j + 1] = temp;    //将temp中保存的原arr[j]值赋给arr[j+1]
            }
        }
    }
}

void printArray(int arr[], int size) {
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

int main() {
    int numbers[] = { 5, 3, 8, 1 };
    int size = sizeof(numbers) / sizeof(numbers[0]);

    printf("排序前: ");
    printArray(numbers, size);

    bubbleSort(numbers, size);

    printf("排序后: ");
    printArray(numbers, size);

    getchar();
    return 0;
}

完整执行过程示例

数组为:[5, 3, 8, 1],size = 4

第1轮 (i = 0):

  • j=0: 比较5和3 → 交换 → [3, 5, 8, 1]

  • j=1: 比较5和8 → 不交换 → [3, 5, 8, 1]

  • j=2: 比较8和1 → 交换 → [3, 5, 1, 8]

第2轮 (i = 1):

  • j=0: 比较3和5 → 不交换 → [3, 5, 1, 8]

  • j=1: 比较5和1 → 交换 → [3, 1, 5, 8]

第3轮 (i = 2):

  • j=0: 比较3和1 → 交换 → [1, 3, 5, 8]

// 初始数组: [5, 3, 8, 1]

// 第1轮(i=0): 比较3次

// j=0: [5,3,8,1] → 5>3? 是 → 交换 → [3,5,8,1]

// j=1: [3,5,8,1] → 5>8? 否 → 不变 → [3,5,8,1]

// j=2: [3,5,8,1] → 8>1? 是 → 交换 → [3,5,1,8]

// 第2轮(i=1): 比较2次

// j=0: [3,5,1,8] → 3>5? 否 → 不变 → [3,5,1,8]

// j=1: [3,5,1,8] → 5>1? 是 → 交换 → [3,1,5,8]

// 第3轮(i=2): 比较1次

// j=0: [3,1,5,8] → 3>1? 是 → 交换 → [1,3,5,8]

相关推荐
Legendary_00825 分钟前
LDR6500:USB‑C DRP PD协议芯片技术详解与应用实践
c语言·开发语言
_深海凉_1 小时前
LeetCode热题100-寻找两个正序数组的中位数
算法·leetcode·职场和发展
2301_800976931 小时前
正则表达式
开发语言·python·正则表达式
故事还在继续吗1 小时前
C++20关键特性
开发语言·c++·c++20
青少儿编程课堂2 小时前
2026青少儿信息素养大赛备赛指南!Python/Scratch/C++备考要点
开发语言·c++·python
旖-旎2 小时前
深搜练习(电话号码字母组合)(3)
c++·算法·力扣·深度优先遍历
谭欣辰2 小时前
C++快速幂完整实战讲解
算法·决策树·机器学习
Mr_pyx2 小时前
【LeetHOT100】随机链表的复制——Java多解法详解
算法·深度优先
非凡ghost2 小时前
可拓浏览器:给手机浏览器装上“外挂“!2W+拓展+AI搜索,玩出无限可能!
windows·智能手机·音视频·firefox
AIFarmer2 小时前
【无标题】
开发语言·c++·算法