0

コンパクトポインターを使用してバブルソートを実装しようとしています。教師が提供する DisplayValues ドライバーを使用しようとすると、並べ替えは最初の 2 つだけを並べ替えるようで、失敗します。

  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ストリームにフラグを設定します。各ストリームには独自のフラグがあります。あなたの教授は、グローバルなフラグ セットが 1 つあるという印象を受けているようです。の同じエラーresetiosflags

于 2012-10-29T06:20:00.507 に答える
0

それを「do{...}while」ブロックにする「do」があるべきではありませんか?

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 に答える