您的位置:首页 > 编程语言 > Java开发

二分查找--Java版

2017-06-07 16:42 211 查看

目录

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);
}

//1.非递归代码
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;
}

//2.递归实现     时间复杂度为 O(logN)
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;
}
}


如果您喜欢我写的博文,读后觉得收获很大,不妨小额赞助我一下,让我有动力继续写出高质量的博文,感谢您的赞赏!!!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: