public class TestSearch {
public static void main(String[] args) {
int a[] = { 1, 3, 6, 8, 9, 10, 12, 18, 20, 34 };
int i = 12;
//System.out.println(search(a, i));
System.out.println(binarySearch(a, i));
}
public static int search(int[] a, int num) {
for(int i=0; i<a.length; i++) {
if(a[i] == num) return i;
}
return -1;
}
public static int binarySearch(int[]a, int num) {
if (a.length==0) return -1;
int startPos = 0;
int endPos = a.length-1;
int m = (startPos + endPos) / 2;
while(startPos <= endPos){
if(num == a[m]) return m;
if(num > a[m]) {
startPos = m + 1;//把这个m改成a[m]
}
if(num < a[m]) {
endPos = m -1;
}
m = (startPos + endPos) / 2;
}
return -1;
}}
public static void main(String[] args) {
int a[] = { 1, 3, 6, 8, 9, 10, 12, 18, 20, 34 };
int i = 12;
//System.out.println(search(a, i));
System.out.println(binarySearch(a, i));
}
public static int search(int[] a, int num) {
for(int i=0; i<a.length; i++) {
if(a[i] == num) return i;
}
return -1;
}
public static int binarySearch(int[]a, int num) {
if (a.length==0) return -1;
int startPos = 0;
int endPos = a.length-1;
int m = (startPos + endPos) / 2;
while(startPos <= endPos){
if(num == a[m]) return m;
if(num > a[m]) {
startPos = m + 1;//把这个m改成a[m]
}
if(num < a[m]) {
endPos = m -1;
}
m = (startPos + endPos) / 2;
}
return -1;
}}
解决方案 »
- java tcp发送图片,为什么它总是报错:socket cannot be resolved to a type
- MulticastSocket的receive方法一直报错 就算按照JDK上面的列子还是报错,懂的人进来指导下 谢谢
- 能详细帮我的代码稍稍注释一下吗? 简单的代码. 两天之内结贴
- 关于接口使用的一个问题
- 如何把项目打包生成exe文件?
- 求JDK官方中文文档
- 请教Applet问题
- Unsupported VM encoding MS936什么意思?
- 菜鸟问题,请多帮忙,进者有分
- 求几个完整的Java程序,什么内容的程序都行,要包含工程文件和全部源文件,主要用于学习,发者就给分。
- java script 问题求助
- URL相对转绝对的问题
如果找不到问题,我会在程序中插入一些输出语句,把一些中间变量的值打印出来.m = (startPos + endPos) / 2;之前插入一条System.out.println("s="+startPos+" m="+m+" e="+endpos);运行程序,看结果就可以了.如果用Eclipse找错就容易多了,可以设断点,可以debug一条条语句执行,我用Eclipse不多.
可以啊。1,选中方法名,按 Alt + Shift + R 直接更改这个方法的名字,完成后按回车,Eclipse 会把所有调用该方法的名称全部改掉。2,要 Package Explorer 视图中,点这个 Java 文件的前面的 + 号展开属性和方法列表,找到需要改的方法选中,再按 Alt + Shift + R。