java数据结构之二分查找法 binarySearch的实例
折半查找法,前提是已经排好序的数组才可查找
实例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
public class BinarySearch { int [] bArr; public void setArr( int [] bArr){ this .bArr=bArr; } public static void main(String[] args) { int arrLength= 16 ; int [] bArr= new int [arrLength]; System.out.println( "数组:" ); bArr= new int []{ 72 , 31 , 13 , 94 , 85 , 27 , 64 , 71 , 19 , 55 , 49 , 40 , 8 , 70 , 17 , 13 }; for ( int i= 0 ;i<arrLength;i++){ //bArr[i]=(int)(Math.random()*100); System.out.print(bArr[i]+ " " ); } System.out.println(); System.out.println( "排序:" ); QuickSort qs= new QuickSort(); qs.setArr(bArr); qs.quickSort( 0 , bArr.length- 1 ); for ( int i= 0 ;i<arrLength;i++){ System.out.print(bArr[i]+ " " ); } BinarySearch bs= new BinarySearch(); bs.setArr(bArr); System.out.println(); System.out.println( "查找:" ); int val=bs.binarySearch(bArr.length- 1 , 0 , 13 ); System.out.println( "查找:bArr[" +val+ "]=" + 13 ); } int binarySearch( int max, int min, int val){ //有重复的取的是第一个出现的位置 int mid=(max+min)/ 2 ; if (val==bArr[mid]){ return mid; } else if (val>bArr[mid]){ return binarySearch(max,mid,val); } else if (val<bArr[mid]){ return binarySearch(mid,min,val); } return - 1 ; //查找失败 } } |
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
原文链接:http://zw7534313.iteye.com/blog/655113