刚学冒泡算法的排序怎么不对。
本帖最后由 一剑飘零 于 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
百思不得其解。
你把15-17行放到20行后面就对了{:1_925:} 你直接把输出放在第一个for循环里了 楼上正解
for (i = 0; i < 5; i++) {
printf("a[%d]=%d\n", i, a);
}
这个输出还是在第一个for循环遍历中,你需要把你这for单独拿出来遍历,或者直接在外边输出a也可 楼上正确,你的输出写在了循环里面! 本帖最后由 minibeetuaman 于 2021-8-3 19:45 编辑
别乱用自变量,把输出循环的i换成其他名字
茫茫狐 发表于 2021-8-3 19:35
楼上正解
for (i = 0; i < 5; i++) {
printf("a[%d]=%d\n", i, a);
一语点醒,感谢。 huahuali 发表于 2021-8-3 19:28
你直接把输出放在第一个for循环里了
一语点醒,感谢。 minibeetuaman 发表于 2021-8-3 19:43
别乱用自变量,把输出循环的i换成其他名字
感谢指点。 WhiteCatSama 发表于 2021-8-3 19:41
楼上正确,你的输出写在了循环里面!
感谢,一语点醒。