用递归法写一个折半查找的算法
收起
知与谁同
2018-07-16 19:38:57
1675
0
2
条回答
写回答
取消
提交回答
-
#include<stdio.h>
int bin_search(int le,int ri,int num,int arr[])
{
int mid;
mid=((le+ri)>>1);
if(le>ri){
return -1;
}
else if(arr[mid]==num){
return mid;
}
else if(arr[mid]<num){
return bin_search(mid+1,ri,num,arr);
}
else{
return bin_search(le,mid-1,num,arr);
}
}
int main()
{
int arr[101];
int local=-1;
for(int i=1;i<=100;i++)
arr[i]=i*2-1;
int num;
scanf("%d",&num);
local=bin_search(1,100,num,arr);
if(local!=-1){
printf("local = %d and value = %d\n",local, arr[local]);
}
else {
printf("no such number!\n");
}
}
2019-07-17 22:54:35
-
// 二分查找前提数组元素已按升序排序
int binsearch(int value, int a[], int nArrayLen)
{
int nMid = nArrayLen / 2;
if (value == a[nMid])
return nMid; // 找到下标
if (nMid == 0)
return -1; // 找不到
if (value < a[nMid])
return binsearch(value, a, nMid);
else
return binsearch(value, a + nMid, nArrayLen - nMid);
}
2019-07-17 22:54:35