查找算法 - 二分法查找

當數據量很大適宜採用該方法。採用二分法查找時,數據需是排好序的。 基本思想:假設數據是按升序排序的,對於給定值x,從序列的中間位置開始比較,如果當前位置值等於x,則查找成功;若x小於當前位置值,則在數列的前半段 中查找;若x大於當前位置值則在數列的後半段中繼續查找,直到找到爲止。二分法查找在針對大量有序排列的情況下發揮出很優越的效率,非常簡單

上代碼:

package com.machine;

public class Search {

	public static void main(String[] args) 
	{
		// TODO Auto-generated method stub
		int arr[]={0,1,2,3,4,5,6};
		Binary_search bin_sea = new Binary_search();
		bin_sea.search(arr, 0, arr.length-1, 0);
	}
}

class Binary_search
{
	public void search(int arr[],int leftIndex,int rightIndex,int val)
	{
		//首先找到中間值
		int midIndex=(rightIndex + leftIndex) / 2 ;
		int midVal=arr[midIndex];
		
		if(leftIndex<=rightIndex)
		{
			//如果要找的值比Val大
			if(midVal>val )		//在arr左邊找
			{
				search(arr,leftIndex,midIndex-1,val);
			}
			else if(midVal<val )
			{
				search(arr,midIndex+1,rightIndex,val);
			}
			else if(midVal==val)
			{
				System.out.println("下標值爲:" +midIndex);
			}
	
		}
	}
}


發佈了19 篇原創文章 · 獲贊 27 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章