投稿日 | : 2005/08/02(Tue) 19:30 |
投稿者 | : chama |
Eメール | : |
URL | : |
タイトル | : 配列の大きさを減らしたい |
こんにちは。教えていただきたいことがあります。
A(A_MAX)とB(B_MAX)という配列があり、Bと等しいAの要素を選択したいと考えてます。
ここで、A,Bの両配列とも各々で重複した値はないとします。
例:A(1)=3,A(2)=1,A(3)=2
B(1)=5,B(2)=3,B(3)=2,B(4)=4,B(5)=1
※A(1)はいずれのA(j)とも重複しない。A(1)≠A(j)
ごく単純に、
for i= 1 to B_MAX
for j= 1 to A_MAX
if(A(j) = B(i))then
・A(j)の格納操作
exit for
endif
next j
next i
としました。
A,Bの両配列とも大きさが10,000程度あるので、めちゃくちゃ処理時間がかかってしまいます。
そのため、一度ヒットしたB(i)を比較対象から外したいと考えてます。
つまり、
1.A(1)と等しいB(i)を見つけるループ → 全てのB(i)を対象として見つける(B(2)がヒット)
2.A(2)と等しいB(i)を見つけるループ → B(2)を除去したB(i)を対象として見つける
というようにしたいのですが、配列の大きさを小さくする方法が分からず、困ってます。
動的配列では配列の大きさを大きくすることはできても、小さくできないと書いてありました。
ほかに方法はないのでしょうか。
ご教示のほどお願いいたします。