0

我试图用紧凑的指针实现冒泡排序。排序似乎只对前两个排序,然后在尝试使用教师提供的 DisplayValues 驱动程序时失败

  float *Sort(float *first, size_t elements)
{
    {
        for (didSwap = 0, current = first, next = first + 1; current < last; ++current, ++next)
        {
                 didSwap = 1;
            }
        }
        --last;
    }
    while (didSwap);

    return first;
}
4

2 回答 2

1

这很简单,教授的例程期望数组按降序排列。您的代码对我来说看起来正确,但它按升序排序。

顺便说一句,您的教授对工作原理有误解setiosflags。它应该是

cout << setiosflags(ios_base::fixed);

cout流上设置标志。每个流都有自己的标志,您的教授似乎认为有一组全局标志。相同的错误resetiosflags

于 2012-10-29T06:20:00.507 回答
0

难道不应该有一个“做”来使它成为一个“做{...}”块吗?

float *Sort(float *first, size_t elements)
{
    do
    {
        for (didSwap = 0, current = first, next = first + 1; current < last; ++current, ++next)
        {
             didSwap = 1;
        }

        --last;
    }
    while (didSwap);
}
于 2012-10-30T15:38:17.310 回答