现在我正在尝试学习冒泡排序,但是我遇到了一个问题,其中while循环使用了1次至几次循环。我认为问题出在将布尔值“完成”设置为true的循环内,但我无法解决该问题。
以下是该代码的pastebin链接:https://pastebin.com/7QRTm1ju
这是有问题的循环:
//checking if string is in order (low to high)
for (int x = 0; x < sizeof(yeet) / sizeof(yeet[0]); x++)
{
if (yeet[x] < yeet[x + 1])
{
length++;
if (length == stop)
{
done = true;
}
}
}
答案 0 :(得分:0)
该代码循环了太多次,而不是一次。改用它:
//checking if string is in order (low to high)
int n = sizeof(yeet) / sizeof(yeet[0]);
for (int x = 0; x < n - 1; x++)
{
if (yeet[x] < yeet[x + 1])
{
length++;
if (length == stop)
{
done = true;
}
}
}
当x
等于n-1
时,如果您从yeet[x + 1]
读取,则超出数组末尾。请记住,对于n
个元素的数组,有效的数组索引是从0
到n-1
(包括两个端点)。
您可能想查看一下用于计算stop
的值的代码以及程序中的其他循环。