2012-04-17 92 views
0

我有五个阵列,其中我存储传入INT号码,如:的Java查找元素阵列

int array1 = {1,6,..} 
int array2 = {2,7,..} 
. 
. 
int array5 = {5,10,..} 

现在,我必须做的,搜索在另一个数组未来数字。

一样,

for(i = 0, i < array1.size ; i++){ 

int element = array1[0] ; 

//here array2, array3, ..., array5 can have different size 
search for array2 to find element+1 
search for array3 to find element+2 
. 
. 
search for array5 to find element+5 
} 

我在做什么现在的问题是:

Run for loop for 0 to array2 size, to find element+1 (so for others) 

然而,这是相当缓慢。任何人都可以给我一些想法,如何使它更快(我也可以将数组更改为任何其他数据结构)。

对不起,我让两个错误一边问,我应该提什么:

1) Arrays are sorted (incremental elements always). 
2) Array elements are very few (2-3) so Binary Search will be expensive. 
3) I have to perform the search for thousand times means when channel input pause, I have to perform search, then again channel start and I have to perform search ... so on. 
+0

你的数字是否总是增加一个固定的数量(在给定的例子中是5)? – 2012-04-17 15:45:56

+0

在for循环中使用'for(int i = 0,...)',否则请注意您的'i'变量可以在您的方法的其他地方更改。 – Ozzy 2012-04-17 15:47:49

+0

@Ozzy,不,我那样做。我的代码o/P是正确的。没有问题。我想要更快一个。 – Arpssss 2012-04-17 15:48:59

回答

4

如果数组进行排序,使用二进制搜索找到的,而不是循环通它的每一个元素的元素。

+0

你的回答是正确的。但是,我忘了提到一些东西。我修改了我的问题。 – Arpssss 2012-04-17 15:56:17

+1

如果数组的大小总是很小,那么你已经做的线性搜索是最好的方法。 – 2012-04-17 16:18:36