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]

相关推荐
这是程序猿15 小时前
基于java的ssm框架旅游在线平台
java·开发语言·spring boot·spring·旅游·旅游在线平台
芳草萋萋鹦鹉洲哦15 小时前
【elemen/js】阻塞UI线程导致的开关卡顿如何优化
开发语言·javascript·ui
爱学习的小邓同学15 小时前
C++ --- 多态
开发语言·c++
颜*鸣&空15 小时前
QT实现串口通信+VSPD+串口调试工具
开发语言·qt
AndrewHZ15 小时前
【图像处理基石】如何在图像中提取出基本形状,比如圆形,椭圆,方形等等?
图像处理·python·算法·计算机视觉·cv·形状提取
蓝牙先生15 小时前
简易TCP C/S通信
c语言·tcp/ip·算法
槁***耿15 小时前
JavaScript在Node.js中的事件发射器
开发语言·javascript·node.js
U***498315 小时前
JavaScript在Node.js中的Strapi
开发语言·javascript·node.js
@大迁世界15 小时前
相信我兄弟:Cloudflare Rust 的 .unwrap() 方法在 330 多个数据中心引发了恐慌
开发语言·后端·rust
大侠课堂16 小时前
C#经典面试题100道
开发语言·c#