資料結構基礎 5 二分查詢

2021-06-05 11:06:14 字數 1135 閱讀 3789

#include #include #include #include int binary_serch(int *arr, int arr_len, int value)

else if(value < arr[m]) else

} return -1;

}int main(int argc, char *argv)

; for(pos=0; pos<10; ++pos)

printf("\n");

for(pos=0; pos<10; ++pos)

printf("\n\n");

pos = binary_serch(arr, 10, 9);

printf(" 9's pos = %2d...\n", pos);

pos = binary_serch(arr, 10, 1);

printf(" 1's pos = %2d...\n", pos);

pos = binary_serch(arr, 10, 19);

printf(" 19's pos = %2d...\n", pos);

pos = binary_serch(arr, 10, 10);

printf(" 10's pos = %2d...\n", pos);

pos = binary_serch(arr, 10, -10);

printf("-10's pos = %2d...\n", pos);

pos = binary_serch(arr, 10, 30);

printf(" 30's pos = %2d...\n\n", pos);

return 0;

}

執行測試結果:

0   1   2   3   4   5   6   7   8   9  

1, 3, 5, 7, 9, 11, 13, 15, 17, 19,

9's pos = 4...

1's pos = 0...

19's pos = 9...

10's pos = -1...

-10's pos = -1...

30's pos = -1...

資料結構 二分查詢

二分查詢演算法也稱為折半搜尋 二分搜尋,是一種在有序陣列中查詢某一特定元素的搜尋演算法。搜素過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜素過程結束 如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一樣從中間元素開始比較。如果在某一步驟陣列為...

資料結構 二分查詢

總共有n個元素,漸漸跟下去就是n,n 2,n 4,n 2 k 接下來操作元素的剩餘個數 其中k就是迴圈的次數。由於你n 2 k取整後 1,即令n 2 k 1,可得k log2n,是以2為底,n的對數 所以時間複雜度可以表示o o logn public class binarysearch else...

資料結構 二分查詢

二分查詢適用於有序的順序表,基本的思路是 首先將給定的關鍵字key與表array的中間位置的元素進行比較。如果相等,則查詢成功,如果不相等,則查詢的元素一定在表的前半部分或者後半部分。繼續縮小範圍到前半部分或者後半部分再進行同樣的查詢,直到找到為止,或者查完之後仍然沒有找到元素。下面給出一次演算法的...