一个短文理解入门级冒泡排序(C语言)

冒泡排序是C语言中常见的排序部分,也是C语言不论是期末考试还是计算机二级都有可能考到的点,我尽量以一个菜鸟的想法(我本身就是菜鸟)讲一下冒泡排序(仅限基础),如有错误,欢迎批评指正!

以下代码由AI生成:(升序)

#include <stdio.h>

// 定义冒泡排序函数
void bubbleSort(float arr[], int n) {
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                // 交换元素
                float temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

int main() {
    float arr[10];
    int n = sizeof(arr) / sizeof(arr[0]);

    printf("请输入十个浮点数:\n");
    for (int i = 0; i < n; i++) {
        scanf("%f", &arr[i]);
    }

    printf("排序前的数组:\n");
    for (int i = 0; i < n; i++) {
        printf("%.1f ", arr[i]);
    }

    bubbleSort(arr, n);

    printf("\n排序后的数组:\n");
    for (int i = 0; i < n; i++) {
        printf("%.1f ", arr[i]);
    }

    return 0;
}

只看代码不好理解,首先对函数部分进行解析:

1.函数的参数表部分,arr是一个浮点数数组变量,是我们要排序的对象;n是arr内元素的个数,一般会在主函数部分给出。

2.(注意for部分可能会报错,事实上是AI生成的代码直接在for内定义了,把for(int i=0;...)部分改为int i;for(i=0;...)即可)i=0,i<n-1是对除了最后一个数之外的数组元素进行遍历;j<n-i+1是保证不对已经排序的元素进行重复遍历。

这里举例讲解一下:

整数数组{5,3,8,4,2}

用上述函数进行冒泡排序(&表示元素发生交换,分先后顺序)

①5 & 3 8 & 4 & 3 2→3 5 4 2 8

②3 5 & 4 & 2 8→ 3 4 2 5 8

③3 4 & 2 5 8→3 2 4 5 8

④3 & 2 4 5 8→2 3 4 5 8

实际上这就是函数部分进行时的过程,其中temp用的是中间变量,你们交换数应该也用过,这里不再赘述。

注意一点:这里的函数没有return ,所以函数声明应该用void,int main(void)

主函数部分:

这里没什么可说的,基本就是使用函数,数组遍历然后输出 。

注意:n=sizeof(arr)/ sizeof(arr[0])实际上表示arr内元素的个数,sizeof表示该变量(元素)所占的字节数。

好了,基础的冒泡排序就是这些了,C语言博大精深,我们还有很长的路要走。

最后以翁凯老师的几句话收尾:

计算机的所有东西都是人做出来的,别人能想的出来的,我也一定想的出来。在计算机里头没有任何黑魔法,所有的东西只是我现在不知道而已。

与君共勉。

  • 11
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值