1. 請自行學習二分查詢演算法,並實現以下函式
:- 1.1 在乙個已排序的整型陣列array中,假設已知array陣列的元素個數為n,需要查詢的關鍵值為key,要求在array陣列中查詢值為key的數字,並返回該數字在陣列中對應的索引值。請設計並實現該函式。
#include
int bsearch1(int *array,int key,int n)
if(array[0]
else
}printf("key is not in this array!\n");
return -1; }
- 1.2 在標準c庫中,二分查詢函式bsearch的原型如下:
void *bsearch(const void *key, const void *base, size_t nmemb,
size_t size, int (*compar)(const void *, const void *))
實現**如下:
void*bsearch2(const void *key, const void *base, size_t nmemb,size_t size, int (*compar)(const void *, const void *))
return null; }
int compare(const void *a,const void *b )//compare的實現;
int main() ;
int b[8]=;
int *q;
bsearch1(a,3,8);
bsearch1(b,3,8);
q=(int*)bsearch2(&a[3],a,8,4,compare);
printf("the key's index is %d\n",q-a);
return 0; }
資料結構 二分查詢(演算法)
二分查詢要求陣列必須有序,如果陣列無序,需對陣列進行排序操作 首先確定陣列中間值的下標 mid left right 2 讓需要查詢的值findvalue與arr mid 進行比較 1 如果無它要求,直接返回mid即可 2 如果需要查詢第乙個元素位置,需要向左迴圈,查詢mid前面是否還有滿足需求的值...
資料結構查詢演算法(二分查詢)
參考例子 後記 二分查詢演算法,說白了就是在有序的陣列裡面給予乙個存在陣列裡面的值key,然後將其先和陣列中間的比較,如果key大於中間值,進行下一次mid後面的比較,直到找到相等的,就可以得到它的位置。首先確定整個查詢區間的中間位置mid strat end strat 2 用待查關鍵字key值與...
資料結構與演算法 二分查詢
二分查詢的思想是在已經排序 公升序 的陣列中,如果要查詢的數比中位數小,那麼其位置只可能在左半部分,相反只能在右半部分。這樣每次把查詢區間縮小一半,比順序查詢效率快得多。非遞迴寫法 public static int binarysearchinasclooply int nums,int star...