資料結構 二分查詢演算法

2021-09-21 12:32:52 字數 927 閱讀 9532

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...