二分查找
這個是精簡了的二分查找,個人覺得實在是無法簡化了,
如果還可以的話,請高人指點一二,先謝謝了。
View Code
#include "iostream"
#include "algorithm"
using namespace std;
int BinSearch(int *R, int n, int KeyNum)
{
int low = 0, high = n+1, mid=0; //mid設置為0,是為了利用R[mid]來查找,這樣更加精簡代碼
while(low <= high)
{
if(R[mid] == KeyNum) //包含了R[0]的情況
return mid;
R[mid]>KeyNum ? high=mid-1 : low=mid+1;
mid = low+(high-low)/2; //為了實現精簡代碼,這句話要放在最后
}
return -2; //沒有找到
}
int main()
{
int a[100];
int len, key;
while(cin>>len && len)
{
for(int i=0; i<len; i++)
cin>>a[i];
sort(a, a+10); //要使用二分查找,必須先從小到大排序
cout<<"Input Key:"<<endl;
while(cin>>key)
cout<<BinSearch(a, len, key)+1<<endl;
}
}
posted on 2011-10-13 22:53 More study needed. 閱讀(221) 評論(0) 收藏 舉報

浙公網安備 33010602011771號