气泡排序不正确循环

时间:2018-10-12 18:50:43

标签: c++

现在我正在尝试学习冒泡排序,但是我遇到了一个问题,其中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;
        }

    }
}

1 个答案:

答案 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个元素的数组,有效的数组索引是从0n-1(包括两个端点)。

您可能想查看一下用于计算stop的值的代码以及程序中的其他循环。