如何从给定数组中找到元素?

时间:2016-05-07 06:35:41

标签: java arrays

我有一个像MyArr {1,3,5,7,9,2,4,6,8,10}这样的数组。我需要迭代并打印"Not Found"直到我达到2.之后,我需要打印剩余的"Found"

我的方法是使用Arrays.BinarySearch(MyArr,2)返回索引2.我不知道如何从这里实现。

2 个答案:

答案 0 :(得分:4)

不能使用二进制搜索,因为它只适用于已排序的数组。

您需要迭代数组。对于每个元素,您必须检查它是否是您的目标值并让代码记住结果,打印适合结果值的输出。

答案 1 :(得分:0)

binarySearch仅适用于已排序的输入数组(按升序排列),并且您的输入数组未排序。

解决方案#1:

  

首先对数组进行排序。然后binarySearch将找到排序数组中元素的正确偏移量。

提示:查看Arrays中的其他方法。

请注意这不是正确的解决方案。实际的问题陈述说你需要逐步完成数组,1)打印"未找到"对于非匹配元素和2)打印"发现"当你找到第一场比赛。解决方案#1仅解决第二个要求,而不是第一个要求。

实际上,二分查找不能满足第一个要求。

除此之外:对数组进行排序以便您可以进行二元搜索...只需一次......效率低下。排序时间比搜索时节省的时间多。在复杂性方面,排序将为O(NlogN),搜索O(logN)的整体复杂度为O(NlogN)。相比之下,简单的线性搜索是O(N)。因此,你只会"收支平衡"如果您对每种类型进行O(logN)二进制搜索。

解决方案#2:

  

忘记二进制搜索,并编写一个循环遍历数组的所有元素。

提示: for循环最好,但是哪种for循环?