投稿日 | : 2005/08/03(Wed) 12:29 |
投稿者 | : Starfish |
Eメール | : |
URL | : |
タイトル | : Re: 配列の大きさを減らしたい |
> ほかに方法はないのでしょうか。
Bを高速なアルゴリズムを使用してソートし配列Cを作成する。検索するときは、
Cをバイナリサーチで検索する。というやり方のほうが早いのではないでしょうか。
もしも、A,Bの配列のとる値が、整数値で、かつ、ある程度の範囲(MAX値分の
配列がとれる)内であれば、値とインデックスを逆にしたテーブルを作れば、
超高速に処理できると思います。
たとえば、
B(1)=5,B(2)=3,B(3)=2,B(4)=4,B(5)=1
なら
C(1)=5,C(2)=3,C(3)=2,C(4)=4,C(5)=1
あれ、例が悪すぎ。Bとおんなじになってしまいましたので、例を変えます。
B(1)=3,B(2)=8,B(3)=5,B(4)=4,B(5)=1
なら
C(1)=5,C(2)=0,C(3)=1,C(4)=4,C(5)=3,C(6)=0,C(7)=0,C(8)=2
こんな配列を作成しておけば、A(1)=3と等しいB(i)は、C(3)=1より
B(1)ということがすぐにわかります。