算法設計與分析----二分搜索(遞歸)

二分搜索有很多寫法,在算法分析與設計中,二分搜索是在遞歸分治這一章講到的,所以用遞歸實現一下。
二分搜索其實很容易理解,設想一根從北京到上海的電線壞掉了,但是不知道是從哪裏壞的,要怎樣才能使用最少的步驟快速找到問題呢,那就是二分,先到北京與上海的中間位置,我們就稱中點吧,測試一下電線,如果是北京到中點有電,那麼就說明壞的位置位於上海到中點之間,我們再找到上海到中點的中點,依次類推,很快就能找到問題所在,這種思想就是二分搜索思想。這樣會使查找次數指數冪下降,但是前提是待查找的數組是有序的。
這裏是遞歸的版本

#include<bits/stdc++.h>
using namespace std;
int f = 0;
int a[10] = {1,2,3,4,5,6,7,8,9,10};
int find(int x,int l,int r)
{
	if(l > r)
		return 0;
	int now = (l+r)/2;
	if(a[now] == x)
		f = 1;
	else if(a[now] > x)
		find(x,l,now-1);
	else
		find(x,now+1,r);
}
int main()
{
	f = 0;
	int i;
	scanf("%d",&i);
	find(i,0,9);
	puts(f==1?"yes":"no");
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章