#include<stdio.h>
int seek(int * pArr,int low,int high,int num);
void main()
{
int Arr[]={1,2,3,4,5,6,7,8,9,10};
int find,num;
printf("input a num to be found.\n");
scanf("%d",&num);
find = seek(Arr,0,9,num);
if (find == -1) printf("num=%d not found!\n",num);
else printf("num has been found!\nArr[%d] = %d\n",find,Arr[find]);
}
int seek (int *pArr,int low,int high,int num)
{//pArr 為陣列名,該陣列必須是排好序了(這是二分法的要求),這裡按從小到大排序
int mid;
mid = (low+high)/2;
if ((low>=high)&&(pArr[mid]!=num))
return -1;
else
if (pArr[mid]==num)
return mid;
else if (pArr[mid]>num)
high = mid+1;//中間數字比要查的數還大,說明可能在中間段以前
low = mid-1;//同上,可能在中間段以後
return seek(pArr,low,high,num); //遞迴
#include<stdio.h>
int seek(int * pArr,int low,int high,int num);
void main()
{
int Arr[]={1,2,3,4,5,6,7,8,9,10};
int find,num;
printf("input a num to be found.\n");
scanf("%d",&num);
find = seek(Arr,0,9,num);
if (find == -1) printf("num=%d not found!\n",num);
else printf("num has been found!\nArr[%d] = %d\n",find,Arr[find]);
}
int seek (int *pArr,int low,int high,int num)
{//pArr 為陣列名,該陣列必須是排好序了(這是二分法的要求),這裡按從小到大排序
int mid;
mid = (low+high)/2;
if ((low>=high)&&(pArr[mid]!=num))
return -1;
else
{
if (pArr[mid]==num)
return mid;
else if (pArr[mid]>num)
high = mid+1;//中間數字比要查的數還大,說明可能在中間段以前
else
low = mid-1;//同上,可能在中間段以後
return seek(pArr,low,high,num); //遞迴
}
}