通用的二分法查詢演算法理解

2021-08-21 06:15:36 字數 1036 閱讀 9560

對於程式設計人員來說,查詢演算法是非常常用的一種演算法,在我們初學c語言時,我們曾經對陣列進項遍歷,最簡單的是線性查詢,但是這僅僅侷限於int型別的陣列,而非通用。如果能夠針對任意型別使用查詢演算法,那麼就會實現該演算法的通用型,更能夠體現它的正規化

。1、二分查詢的關鍵:

二分查詢的基本思想是通過不斷縮小查詢的範圍,每次將資料與陣列中間的資料進行比較,從而一步一步進行比較並且縮小範圍,進而找到目標數。

2、通用查詢演算法思想:對於每種的資料型別,其資料的比較方式會有所不同,比如,兩個整數的比較,只要把兩個整數相減,看結果是0還是正負數就可以比較出大小。但是對於通用來說,並不意味著只是整數進行比較,對於兩個字串的比較可以就要用strcmp進行比較,利用的函式原型是void* bsearch ( void* key, void* base, int num, int size, int (*compar)(const void*,const void*)) 第五個引數是乙個指標型別的函式,它所指向的函式時乙個比較函式。帶兩個void*引數,返回比較過後的結果。

3、通用二分查詢原始碼(c):

#include

void* bsearch ( void* key, void* base, int num, int size, int (*compar)(const void*,const void*)) 

else if (compar(key, (char *)base + mid * size) < 0)

else

}if (low <= high) 

return null;

}int compare_int( void *elem1,  void *elem2) 

int main() 

int a[10] = ;

int key = 88;

int *p = (int *)bsearch(&key, a, 10, sizeof(int), compare_int);

if (p != null) 

else

return 0;

}

查詢演算法 二分法

二分查詢演算法的基本思想 一.首先確定該區間的中間元素位置 mid low high 2 mid代表區間內中間元素的位置 low代表區間內最左邊元素的位置 high代表區間內最右邊元素的位置 二.將待查key元素值與中間元素mid的值 array mid 比較,如果相等,則查詢成功,否則確定新的查詢...

演算法 二分法查詢

1 2 二分法實驗 31 設a 0 n 1 是乙個已排好序的陣列.4請改寫二分搜尋演算法,使得當搜尋元素x不在陣列中時,5返回小於x的最大元素的位置i和大於x的最大元素位置j.6當搜尋元素在陣列中時,i和j相同,均為x在陣列中的位置.72 設有n個不同的整數排好序後存放於t 0 n 1 中,8若存在...

演算法 二分法查詢

免費 二分法查詢主要是為了快速查詢給定陣列內,期待值在陣列中的位置 下標 二分法查詢通過對整個陣列取中間值,判斷期待值所在的範圍並縮小範圍,每次查詢範圍折半,直到範圍的邊界重合,得出期待值的位置,如果找不到返回null 二分法有乙個先決條件是 陣列內元素必須是有序的 給定乙個包含1,3,5,7,8,...