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]

相关推荐
wjs20242 分钟前
Ruby File 类和方法
开发语言
xyq20246 分钟前
API 类别 - UI 核心
开发语言
wuweijianlove14 分钟前
算法调度问题中的代价模型与优化方法的技术5
算法
Dxy123931021619 分钟前
Python路径算法简介
开发语言·python·算法
加勒比之杰克20 分钟前
从阻塞 IO 到 epoll:把 Linux 网络 IO 一次讲透
linux·网络·windows·select·多路转接·epoll·poll
文慧的科技江湖21 分钟前
光储充协同的终极闭环:用SpringCloud微服务打造“发-储-充-用“智能能源网络 - 慧知开源充电桩管理平台
java·开发语言·spring cloud·微服务·能源·充电桩开源平台·慧知重卡开源充电桩平台
東雪木25 分钟前
Java学习——内部类(成员内部类、静态内部类、局部内部类、匿名内部类)的用法与底层实现
java·开发语言·学习·java面试
昵称暂无125 分钟前
通过 C# 复制 Word 文档、指定段落、指定节
开发语言·c#·word
满满和米兜28 分钟前
【Java基础】-I/O-字符流
java·开发语言·python
JQLvopkk31 分钟前
C#实现的简单的漏洞扫描器
开发语言·c#