2016-04-05 22 views
1

多次元配列の2つの行を効率的に比較するにはどうすればよいですか?例えば多次元配列の2つのchar配列を比較するC

私は、次の多次元配列がある場合:

char Multi_Array[4][5] = { 
          {0,1,2,3,4}, //Row1 
          {5,6,7,8,9}, //Row2 
          {0,1,2,3,4}, //Row3 
          {5,9,6,3,2} //Row4 
         } 

を私は最終的にあなたの例では、すべての一意の行

+0

[任意のメモリを比較する]標準機能があります(http://en.cppreference.com/w/c/string/byte/memcmp)、おそらく使用できますか? –

+0

私は初心者レベルのCプログラミングの本で見つけるのに5分かかる本当に基本的なことに答えました。 – Lundin

+0

完璧に動作しますありがとう:) – user3095420

答えて

1

を取得するために、お互いにそれぞれの行を比較したいと思い、最も効率的ですおそらくブルートフォースまたはハードコーディングされたロジック。

大規模な配列の場合は、各行の最初の文字へのポインタの配列を個別に作成し、qsortmemcmpを実行することがあります。

ポインタをソートした後、ソートされた配列をトラバースして、memcmpを再度使用して行を前のものと比較することができます。リストから重複を同時に削除することができます。例えば、

int i, uniq = 0; 
for(i = 1; i < NUM_ROWS; i++) 
{ 
    if(0 != memcmp(sorted[uniq], sorted[i], ROW_SIZE)) 
     sorted[++uniq] = sorted[i]; 
} 
++uniq; 

あなたの行が小さい場合は、あなたが完全にポインタの配列をスキップして(それはあなたが何をしたいの場合)、インプレース配列を変更することもできます。

+0

@ user3095420あなたがあなたの答えを持っている場合は、より明確に答えを受け入れてください。詳細はhttp://stackoverflow.com/help/someone-answersを参照してください。 –

関連する問題