1

「アルゴリズムの紹介」から、n 個の要素を n/5 グループに分割し、再帰的に中央値を見つけてから、i 次の統計を再帰的に見つけるようにコードを実装しようとしています。これが私のコードです

bool isTrue(int *a, int *b)
{  
  if((*a) < (*b))
    swap(*a, *b);
  return *a < *b;

}

int select(int *A, int n ,int p)
{

    int *B[(n / 5) + 2];
    cout << (n / 5) + 2 << endl;
    int i, j;
    for(i = 1, j = 1; i <= (n - 5); i += 5, ++j)
     {
        sort(A + i, A + i + 5);
        B[j] = A + i + 2;
     }
    sort(A + i, A + n + 1);
    B[j] = A + i + (n - i) / 2;
    sort(B + 1, B + (n / 5) + 2, isTrue);

 }

これは私が行くことができる限りです。今、私は の中央値を見つけようとしていて、ピボットとしてB実行しています。B[median] - Aしかし、それは正しくないようです。本では、中央値の中央値を再帰的に見つけると書かれていますが、それをキャッチできません。何か助けはありますか?編集:ウィキでは、再帰を使用していないことにも注意してください!

4

0 に答える 0