3

整数の配列内の要素の降順を見つける必要があります。

例:

配列がある場合:

x = {24, 55, 22, 1}

配列になるCのアルゴリズムが必要ですorder

order = {2, 1, 3, 4}

「私の」配列xが (1k-1M から) かなり大きくなる可能性があることを考慮して、私の質問は次のとおりです。order配列をできるだけ効率的に (高速に) 取得するにはどうすればよいですか? 明らかに、それを行う効率的なアルゴリズムがすでに存在する必要がありますか?

4

3 に答える 3

0

私は stdlib.h のqsortから始めます。これは関数へのポインターを使用するため、最速ではありませんが、確かにコーディングが簡単です。

int v[4] = {24, 55, 22, 1};
int fcmp(const void *a, const void *b) {
    int A = *(const int*)a;
    int B = *(const int*)b;
    if (v[A] > v[B]) return -1;
    if (v[A] < v[B]) return +1;
    return 0;
}

int main(int argc, char *argv[])
{
    int r[4] = {0, 1, 2, 3 };
    qsort(r, 4, sizeof(int), fcmp);
}
于 2013-10-04T22:31:39.687 に答える