Java数据结构——二分查找

Posted tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java数据结构——二分查找相关的知识,希望对你有一定的参考价值。

技术分享

 

import java.lang.reflect.Array;
import java.nio.Buffer;
import java.util.Arrays;
import java.util.Random;

//=================================================
// File Name       :	Binary_Search
//------------------------------------------------------------------------------
// Author          :	Common

//类名:BinarySearch_Find
//属性:
//方法:
class BinarySearch_Find{
	private int[] temp;
	private int searchKey;
	private int lowerBound = 0;			//下界
	private int upperBound ;				//上界
	private int curNum;
	
	public int[] getTemp() {
		return temp;
	}

	public void setTemp(int[] temp) {
		this.temp = temp;
	}

	public BinarySearch_Find(int[] temp) {//构造函数
		this.temp = temp;
		this.upperBound = temp.length-1;
	}

	public int find(int searchKey){
		this.searchKey = searchKey;
		while(true){
			curNum = (lowerBound+upperBound)/2;
			if(temp[curNum]==this.searchKey){
				return curNum;							//find
			}
			else if(lowerBound>upperBound){
				return -1;										//没有find
			}
			else{
				if(temp[curNum]<this.searchKey){
					lowerBound = curNum+1;
				}
				else{
					upperBound = curNum-1;
				}
			}
		}
	}
	
}

//类名:RandomArrays
//属性:
//方法:
class RandomArrays{					//生成随机数组,有Num个
	
	public int[] getArrays(int Num){
		int[] Arrays = new int[Num];
		Random r = new Random();
		
		for(int i=0;i<Num;i++){
			Arrays[i] = r.nextInt(1000);
//			System.out.print(Arrays[i]+"、");
		}
		return Arrays;
	}
}

//类名:OrderedArrays
//属性:
//方法:
class OrderedArrays{					//生成有序数组,从0开始到Num
	
	public int[] getArrays(int Num){
		int[] Arrays = new int[Num];
		
		for(int i=0;i<Num;i++){
			Arrays[i] = i;
//			System.out.print(Arrays[i]+"、");
		}
		return Arrays;
	}
}

//主类
//Function        : 	Binary_Search
public class Binary_Search {
	
	public static void main(String[] args) {
		// TODO 自动生成的方法存根

//		RandomArrays array_demo = new RandomArrays();
//		BinarySearch_Find arrays = new BinarySearch_Find(array_demo.getArrays(100));
		
		OrderedArrays array_demo = new OrderedArrays();
		BinarySearch_Find arrays = new BinarySearch_Find(array_demo.getArrays(100));
		System.out.println(Arrays.toString(arrays.getTemp()));
		System.out.println(arrays.find(1000));
		
	}
	
	

}

 

技术分享

技术分享

以上是关于Java数据结构——二分查找的主要内容,如果未能解决你的问题,请参考以下文章

Day568.线性查找&二分查找 -数据结构和算法Java

Java算法 -- 二分查找:查找目标元素最左的位置和最右的位置局部最小值问题求解

Java算法 -- 二分查找:查找目标元素最左的位置和最右的位置局部最小值问题求解

Java算法 -- 二分查找:查找目标元素最左的位置和最右的位置局部最小值问题求解

Java算法 -- 二分查找:查找目标元素最左的位置和最右的位置局部最小值问题求解

Java八股文面试题 基础篇 -- 二分查找算法冒泡排序选择排序插入排序希尔排序快速排序