# 二分法查找

328人阅读 评论(0)

Java代码
1. import java.util.Arrays;
2.
3. /**
4.  *
5. * @项目名称：Test
6. * @类名称：BinarySearch
7. * @类描述：   二分法查找
8. * @创建人：Ansj
9. * @创建时间：2011-9-13 下午02:53:47
10. * @修改备注：
11. * @version
12. *
13.  */
14. public class BinarySearch {
15.     public static void main(String[] args) {
16.         int[] ints = {12,123,21,123,1,432,23,42,3,123,124,3,5435,66,456554,435,423,42,1} ;
17.
18.         int find = 66 ;
19.
20.         //先对数组排序
21.         Arrays.sort(ints) ;
22.
23.         for (int i = 0; i < ints.length; i++) {
24.             new BinarySearch().search(ints, ints[i]) ;
25.         }
26.
27.
28.     }
29.
30.     public void search(int[] ints , int find){
31.         search(ints,0,ints.length,find) ;
32.     }
33.
34.
35.     public void search(int[] ints , int start , int end , int find){
36.         if(ints[(start+end)/2]==find){
37.             System.out.println((start+end)/2);
38.         }else if(ints[(start+end)/2] > find){
39.             search(ints , start , (start+end)/2 , find) ;
40.         }else{
41.             search(ints , (start+end)/2 , end , find) ;
42.         }
43.     }
44.
45. }

public static void main(String[] args) {
int[] ints = { 12, 12, 11, 9, 10, 5, 7, 1, 1 };
int start = 0;
int end = ints.length;

int find = 5;

// 先对数组排序
Arrays.sort(ints);

new Test().search(ints, start, end, find);
}

public int search(int[] ints, int start, int end, int find) {
int flag = 0;
if (ints[(start + end) / 2] == find) {
System.out.println(ints[(start + end) / 2]);
flag = 1;
return flag;
} else if ((end - start) <= 1) {
if (ints[start] == find) {
System.out.println(ints[start]);
flag = 1;
return flag;
} else if (ints[end] == find) {
System.out.println(ints[end]);
flag = 1;
return flag;
} else {
flag = 0;
return flag;
}
} else if (ints[(start + end) / 2] > find) {
if (start < (start + end) / 2) {
end = (start + end) / 2;
search(ints, start, end, find);
} else {
flag = -1;
return flag;
}

} else {
if ((start + end) / 2 < end) {
start = (start + end) / 2;
search(ints, start, end, find);
} else {
flag = -1;
return flag;
}

}

return flag;
}

Java代码
1. public static void main(String[] args) {
2.         int[] array = { 12345678910141522232 };
3.         for (int i = 0; i < array.length; i++) {
4.             System.out.println(erFen(array,array[i])) ;
5.         }
6.     }
7.
8.     public static boolean erFen(int[] array, int num) {
9.         int begin = 0;
10.         int end = array.length - 1;
11.
12.         while (begin <= end) {
13.             int mid = (begin + end) / 2;
14.             if (array[mid] > num) {
15.                 end = mid -1 ;
16.             } else if (array[mid] < num) {
17.                 begin = mid +1 ;
18.             } else {
19.                 return true;
20.             }
21.         }
22.
23.         return false;
24.     }
1 楼 liubing539 2011-09-15

public static void main(String[] args) {
int[] ints = { 12, 12, 11, 9, 10, 5, 7, 1, 1 };
int start = 0;
int end = ints.length;

int find = 5;

// 先对数组排序
Arrays.sort(ints);

new Test().search(ints, start, end, find);
}

public int search(int[] ints, int start, int end, int find) {
int flag = 0;
if (ints[(start + end) / 2] == find) {
System.out.println(ints[(start + end) / 2]);
flag = 1;
return flag;
} else if ((end - start) <= 1) {
if (ints[start] == find) {
System.out.println(ints[start]);
flag = 1;
return flag;
} else if (ints[end] == find) {
System.out.println(ints[end]);
flag = 1;
return flag;
} else {
flag = 0;
return flag;
}
} else if (ints[(start + end) / 2] > find) {
if (start < (start + end) / 2) {
end = (start + end) / 2;
search(ints, start, end, find);
} else {
flag = -1;
return flag;
}

} else {
if ((start + end) / 2 < end) {
start = (start + end) / 2;
search(ints, start, end, find);
} else {
flag = -1;
return flag;
}

}

return flag;
}
0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：801807次
• 积分：8378
• 等级：
• 排名：第2431名
• 原创：74篇
• 转载：431篇
• 译文：0篇
• 评论：41条
评论排行
最新评论