遞迴法實現二分查詢

2021-08-20 02:03:08 字數 703 閱讀 6729

二分查詢是一種高效的查詢演算法;

非遞迴二分查詢可參考此篇博文。

演算法思想:

1.選取乙個mid值,並在每次遞迴時重新整理mid值;

2.if(key

3.if(key>nums[mid]),則結束該次函式,使left移到mid+1,開始遞迴;

4.if(key==nums[mid],則找到指定的key值,return mid;

5.遞迴終止條件if(left>right),則表明未找到指定的key值,終結遞迴,返回-1;

**:public class binarysearch

int mid;

mid=(left+right)/2;       //mid為中間值,並在每次遞迴時重新整理

if(key    return binarysearch(nums,key,left,mid-1);

}else if(key>nums[mid]) else

}public static void main(string args) ;

system.out.println(binarysearch(a,10,0,a.length-1));}}

輸出結果:

因為在遞迴的時候要重新整理mid的值(即每一次遞迴的mid值肯定是不一樣的),所以在傳入引數的時候我們加入了兩個引數 left和right;left初始值為陣列第乙個元素的下標,right初始值為最後乙個元素的下標。

二分查詢(遞迴實現)

include include intk int binarysearch int a,int x,int low,int high a表示需要二分的有序陣列 公升序 x表示需要查詢的數字,low,high表示高低位 int mid low high 2 if x a mid 找到x else if...

遞迴實現二分查詢

回文是一種字串,它正著讀和反著讀都是一樣的。比如level,eye都是回文。用迭代的方法可以很快地判斷乙個字串是否為回文。用遞迴的方法如何來實現呢?首先我們要考慮使用遞迴的兩個條件 include iostream include include string define max 100 usin...

二分查詢的遞迴實現

二分查詢又叫做折半查詢,具體的查詢流程如下 查詢的前提是待查詢序列是公升序的。1 演算法流程 a.使用目標元素與樣本數列 公升序 中的中間元素比較大小,若相等則表示查詢成功 b.若目標元素小於中間元素,則應該去中間元素的左邊進行查詢 c.若目標元素大於中間元素,則應該去中間元素的右邊進行查詢 d.重...