【发布时间】:2021-07-15 09:50:58
【问题描述】:
作为一项练习任务,我尝试使用 C 编程语言实现冒泡排序算法。以下是我的代码:
int main() {
int arr[5];
int i, j;
int n = sizeof(arr[0]) / sizeof(arr);
srand(time(NULL));
for (i = 0; i < n; i++) {
arr[i] = rand() % 100;
}
printf("Array before ordering:\n");
for (i = 0; i < n; i++) {
printf("%d\t", arr[i]);
}
printf("\n");
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1; j++) {
if (arr[j] > arr[j + 1]) {
swap(&arr[j], &arr[j + 1]);
}
}
}
printf("Array after ordering:\n");
for (i = 0; i < n; i++) {
printf("%d\t", arr[i]);
}
printf("\n");
system("PAUSE");
exit(0);
}
如您所见,我有两个循环打印出数组,一个打印出初始数组,一个在订购后打印出来。然而这是输出:
排序前的数组:
排序后的数组:
按任意键继续。 . .
由于某种原因,我似乎无法输出数组的元素。我试过在 Visual Studio 和 CLion 上运行它。谁能看到这里出了什么问题?
【问题讨论】:
-
int n = sizeof(arr[0]) / sizeof(arr);- 应该反过来。 -
int n = sizeof(arr[0]) / sizeof(arr);是(可能)int n = 4 / 20;是int n = 0; -
你应该学习如何在调试器中运行你的程序。在单步执行代码时观察变量应该会在几秒钟内发现问题。
标签: arrays c bubble-sort