【发布时间】:2014-05-25 19:24:10
【问题描述】:
我必须创建一个程序,通过二进制搜索算法在 arr1 中搜索 int,如果未找到 int,则返回 -1。我在创建子数组时遇到了麻烦。目前没有它们它可以工作,但我只有一个解决方法,只要 int 大于 start。
public class Question8p2 {
public static void main(String[] args){
int[] arr1 = {2,45,234,567,876,900,976,999};
int start = arr1.length / 2;
int searchNum = 900;
arraySearch(start, searchNum, arr1);
System.out.println(arraySearch(start, searchNum, arr1));
}
public static int arraySearch(int start, int searchNum, int [] arr1){
if (arr1[start] == searchNum){
return start;
}
if (arr1[start] < searchNum){
start = start + 1;
}
if (arr1[start] > searchNum){
start = start / 2;
}
if (start == arr1[0] || start == arr1.length){
return -1;
}
return arraySearch(start, searchNum, arr1);
}
}
【问题讨论】:
-
我不明白你的问题。
I'm having trouble with creating subarrays.是什么意思 -
这不是二分搜索。当目标位于数组的右半部分时,您只需将
start加一。您需要在递归方法中开始和结束。 -
你假设给定的数组已经排序。如果数组未排序,则二进制搜索将不起作用。先排序
标签: java algorithm binary-search arrays