C言語関係掲示板

過去ログ

No.588.配列データの重複チェック

[戻る] [ホームページ]
No.5565

配列データの重複チェック
投稿者---もぐりん(2003/03/12 15:36:29)


はじめまして。
cygwinのgccにてプログラムを作成しています。
int型の配列(a[100]:データはランダムに入っている)の各データを
調べて重複しているデータが存在するかチェックしたいのですが、
どのようにしたら短時間で処理できるでしょうか?
よろしくお願いします。

No.5570

Re:配列データの重複チェック
投稿者---kikk(2003/03/13 01:03:54)


ども。


>int型の配列(a[100]:データはランダムに入っている)の各データを
>調べて重複しているデータが存在するかチェックしたいのですが、

たぶん、2分木をつくるのがよろしいかと。要素挿入時に重複検出が
できます。ただ、要素数100というのがちょと微妙。挿入整列法と
重複検出を同時に行う方法のほうが速いかもしれません。
実際にやってみてください。。

タイプ量が少ない&デバッグが楽なのは、qsort()でソートしたあと、
先頭から順にa[i]とa[i+1]を比較する方法でしょうか。
# sortコマンドとuniqコマンドを組み合わせるのと同じ発想

あと、細かいことですが、2分木でやる場合、要素の内容がランダムだと
すると、重複する確率はかなり低いので、==, >, else(<) の順ではなく、
>, <, else(==)の順(==を最後)で比較・処理するとよろしいかと。。


では。

No.5572

Re:配列データの重複チェック
投稿者---もぐりん(2003/03/13 10:23:51)


qsort()を使った方法でやってみます。
ありがとうございました。