【发布时间】:2011-02-17 11:12:29
【问题描述】:
谁能解释为什么这个冒泡排序功能不起作用以及为什么我的输出中丢失了数字?我对C很陌生,所以如果这是我错过的非常明显的事情,请原谅我。
#include <stdio.h>
#include <stdlib.h>
int bubble(int array[],int length) {
int i, j;
int temp;
for(i = 0; i < (length); ++i) {
for(j = 0; j < (length - 1); ++j) {
if(array[i] > array[i+1]) {
temp = array[i+1];
array[i+1] = array[i];
array[i] = temp;
}
}
}
return 0;
}
int main() {
int array[] = {12,234,3452,5643,0};
int i;
int length;
length = (sizeof(array)/sizeof(int));
printf("Size of array = %d\n", length);
bubble(array, length);
for (i = 0; i < (length); ++i) {
printf("%d\n", array[i]);
}
return 0;
}
输出
Size of array = 5
12
234
3452
0
0
【问题讨论】:
-
这是我今天在这里看到的最好的问题 - 赞成。但是告诉你问题出在哪里会破坏编程的乐趣。想想当你自己整理(不是双关语)时你会感觉多么聪明。
-
作为学习 C 的一部分,您需要学习如何使用调试器。调试器将允许您一次单步执行排序函数,并在每一步后检查数组。
-
您可能想阅读我的回答 stackoverflow.com/questions/101070/…,了解为什么
i和j可能是嵌套循环中变量的无用名称。
标签: c bubble-sort