java二分法查找(递归,非递归实现)

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

	}
}

猜你喜欢

转载自blog.csdn.net/qq_40068214/article/details/89406257