題目
給出在一個遞增有序表A中採用二分查找算法查找值爲k的關鍵字的遞歸算法。
分析
即二分查找的算法。
代碼
核心代碼:
/* 二分查找的核心算法 */
/* A[]指的是要查找的數組;low指的是開始下標;high指的是結束下標;k指的是要查找的關鍵字k */
int BSearch(int A[],int low,int high,int k) {
int mid;// 中間下標
if(low>high) {
return -1;
} else {
mid=(low+high)/2;
if(k<A[mid]) {
return BSearch(A,low,mid-1,k);// 在右端查找
} else if(k==A[mid]) {
return mid;// 查找了返回下標
} else {
return BSearch(A,mid+1,high,k);// 在左端中查找
}
}
}
完整代碼:
#include<stdio.h>
#include<stdlib.h>
#define maxSize 10
/* 二分查找的核心算法 */
/* A[]指的是要查找的數組;low指的是開始下標;high指的是結束下標;k指的是要查找的關鍵字k */
int BSearch(int A[],int low,int high,int k) {
int mid;// 中間下標
if(low>high) {
return -1;
} else {
mid=(low+high)/2;
if(k<A[mid]) {
return BSearch(A,low,mid-1,k);// 在右端查找
} else if(k==A[mid]) {
return mid;// 查找了返回下標
} else {
return BSearch(A,mid+1,high,k);// 在左端中查找
}
}
}
int main() {
int nums[]= {1,2,3,4,5,6,7,8,9};
int n=9;
int k=6;
printf("k的下標:%d",BSearch(nums,0,n-1,k));
return 0;
}
運行結果: