吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1188|回复: 23
收起左侧

[已解决] 刚学冒泡算法的排序怎么不对。

[复制链接]
一剑飘零 发表于 2021-8-3 19:06
本帖最后由 一剑飘零 于 2021-8-4 18:41 编辑

小弟刚学C的从小到大冒泡算法排序,可是输入却不是预期的效果,想了很久找不出原因,还请大佬指点;
[C] 纯文本查看 复制代码
#include <stdio.h>
int main(void) {
        int a[] = {25, 2, 44, 33, 21};
        int i, j;
        for (i = 0; i < 5; i++) {
                for (j = 1; j < 5 - i; j++) {
                        if (a[j] < a[j - 1]) {
                                int tmp;
                                tmp = a[j];
                                a[j] = a[j - 1];
                                a[j - 1] = tmp;
                        }

                }
                for (i = 0; i < 5; i++) {
                        printf("a[%d]=%d\n", i, a[i]);
                }


        }


        return 0;
}


结果输出:
a[0]=2
a[1]=25
a[2]=33
a[3]=21
a[4]=44

百思不得其解。


免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
Nianx + 1 + 1 给你加油打气哈哈,

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

huahuali 发表于 2021-8-3 19:27
你把15-17行放到20行后面就对了
huahuali 发表于 2021-8-3 19:28
茫茫狐 发表于 2021-8-3 19:35
楼上正解
for (i = 0; i < 5; i++) {
            printf("a[%d]=%d\n", i, a[i]);
        }
这个输出还是在第一个for循环遍历中,你需要把你这for单独拿出来遍历,或者直接在外边输出a也可
WhiteCatSama 发表于 2021-8-3 19:41
楼上正确,你的输出写在了循环里面!
minibeetuaman 发表于 2021-8-3 19:43
本帖最后由 minibeetuaman 于 2021-8-3 19:45 编辑

别乱用自变量,把输出循环的i换成其他名字
 楼主| 一剑飘零 发表于 2021-8-3 19:43
茫茫狐 发表于 2021-8-3 19:35
楼上正解
for (i = 0; i < 5; i++) {
            printf("a[%d]=%d\n", i, a);

一语点醒,感谢。
 楼主| 一剑飘零 发表于 2021-8-3 19:44
huahuali 发表于 2021-8-3 19:28
你直接把输出放在第一个for循环里了

一语点醒,感谢。
 楼主| 一剑飘零 发表于 2021-8-3 19:45
minibeetuaman 发表于 2021-8-3 19:43
别乱用自变量,把输出循环的i换成其他名字

感谢指点。
 楼主| 一剑飘零 发表于 2021-8-3 19:47
WhiteCatSama 发表于 2021-8-3 19:41
楼上正确,你的输出写在了循环里面!

感谢,一语点醒。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 01:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表