【发布时间】:2020-12-07 18:18:00
【问题描述】:
我是 C 的新手,当我这样做时,会排列列表中的元素:
#include <stdlib.h>
#include <stdio.h>
int main()
{
int list[] = {6, 4, 8, 1, 0, 9, 11, 50, 60, 10};
int i, j, aux, k;
int len = sizeof(list) / sizeof(list[0]);
for (i = 0; i < len; i++)
{
for (j = 0; j < len; j++)
{
if (list[j] > list[j + 1])
{
aux = list[j + 1];
list[j + 1] = list[j];
list[j] = aux;
}
}
}
for (k = 0; k < len; k++)
{
printf("%d ", list[k]);
}
return 0;
}
输出:
-13168 0 1 4 6 8 9 10 11 50
为什么第一个值是-13168?
【问题讨论】:
-
您在访问数组之外进行排序,所以奇怪的值是您从数组外部读取的内容。
-
我是如何访问数组之外的,我从 0 开始到数组长度
-
是的,然后你从前面读到。
-
if (list[j] > list[j+])和aux = list[j+1];等 — 当j是len - 1、j + 1是len和list[len]时,这些在数组外读取。 -
list[j + 1]不存在时j == n - 1
标签: arrays c sorting bubble-sort