#include <stdio.h>
int bin_search( int key[], int low, int high, int k )
{
int mid;
if( low > high )
{
return -1;
}
else
{
mid = (low + high) / 2;//
if( key[mid] == k )
{
return mid;
}
if( k > key[mid] )
{
return bin_search( key, mid+1, high, k ); // 在序列的後半部分查找
}
else
{
return bin_search( key, low, mid-1, k ); // 在序列的前半部分查找
}
}
}
int main()
{
int str[11] = {1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89};
int n, addr;
printf("請輸入待查找的關鍵字: ");
scanf("%d", &n);
addr = bin_search(str, 0, 10, n);//0,10爲數組最小值和最大值的下標
if( -1 != addr )
{
printf("查找成功! 關鍵字 %d 所在的位置是: %d\n", n, addr);
}
else
{
printf("查找失敗!\n");
}
return 0;
}
利用遞歸進行二分查找
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.