package com.ycit.search;
import com.ycit.sortSelect.BasicSort;
/**
* @author 江鹏飞
* 二分查找 递归方式与非递归方式
*/
public class BinarySearch {
//递归方式
public void binarySearch(int a[],int val,int low,int high){
int middle = (low+high)/2;
if(low<high){
if(a[middle]==val){
System.out.println("找到元素下标:"+middle);
}else if(val<a[middle]){
//左边找
binarySearch(a,val,low,middle-1);
}else if(val>a[middle]){
//左边找
binarySearch(a,val,middle+1,high);
}else{
return ;
}
}
return;
}
//非递归方式
public void binarySearch2(int a[],int val){
int low =0;
int high = a.length-1;
int middle = 0;
while(low<=high){
middle = (low+high)/2;
if(val<a[middle]){
//左边找
high=middle-1;
}else if(val>a[middle]){
//右边找
low=middle+1;
}else{
System.out.println("找到元素下标:"+middle);
return;
}
}
return;
}
public static void main(String[] args){
BinarySearch binarySearch = new BinarySearch();
int [] array = {10,23,4,3,2,5,1,2,623,92,23,23,234,2,34,234,234,2,10};
BasicSort basicSort = new BasicSort();
basicSort.basicSort(array);
for(int n:array){
System.out.print(" "+n);
}
// binarySearch.binarySearch(array, 234,0, array.length-1);
binarySearch.binarySearch2(array,234 );
}
}
java二分法查找(递归,非递归实现)
猜你喜欢
转载自blog.csdn.net/qq_40068214/article/details/89406257
今日推荐
周排行