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