一剑飘零 发表于 2021-8-3 19:06

刚学冒泡算法的排序怎么不对。

本帖最后由 一剑飘零 于 2021-8-4 18:41 编辑

小弟刚学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 < a) {
                              int tmp;
                              tmp = a;
                              a = a;
                              a = tmp;
                        }

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


      }


      return 0;
}


结果输出:
a=2
a=25
a=33
a=21
a=44

百思不得其解。


huahuali 发表于 2021-8-3 19:27

你把15-17行放到20行后面就对了{:1_925:}

huahuali 发表于 2021-8-3 19:28

你直接把输出放在第一个for循环里了

茫茫狐 发表于 2021-8-3 19:35

楼上正解
for (i = 0; i < 5; i++) {
            printf("a[%d]=%d\n", i, a);
      }
这个输出还是在第一个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
楼上正确,你的输出写在了循环里面!

感谢,一语点醒。
页: [1] 2 3
查看完整版本: 刚学冒泡算法的排序怎么不对。