目录
1、二分查找解释
2、二分查找图解
3、二分查找代码
——————————————————————————————————
1、二分查找解释
算法思想:又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。
三种查找方法的比较
平均性能:斐波那契>折半
2、二分查找图解
3、二分查找代码
package com.datastructure.search;
/**
* Created by yuhui on 2017/4/21.
*
*二分查找
* 算法思想:又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,
* 则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程。直到查找到了为止,
* 否则序列中没有待查的关键字。
*二种查找方法的比较
* 平均性能:斐波那契>折半
*/
public class Binary_Search {
public static void main(String ars[]){
int[] a={
2,
4,
6,
8,
9,
15,
20};
int num = biSearch(a ,
15);
System.out.println(num);
}
public static int biSearch(
int []array,
int a){
int min=
0;
int max=array.length-
1;
int mid;
while(min<=max){
mid=(min+max)/
2;
System.out.println(mid+
"--------");
if(array[mid]==a){
return mid+
1;
}
else if(array[mid]<a){
min=mid+
1;
}
else{
max=mid-
1;
}
}
return -
1;
}
public static int sort(
int []array,
int a,
int min,
int max){
if(min<=max){
int mid=(min+max)/
2;
if(a==array[mid]){
return mid+
1;
}
else if(a>array[mid]){
return sort(array,a,mid+
1,max);
}
else{
return sort(array,a,min,mid-
1);
}
}
return -
1;
}
}
如果您喜欢我写的博文,读后觉得收获很大,不妨小额赞助我一下,让我有动力继续写出高质量的博文,感谢您的赞赏!!!