折半查詢演算法

2022-02-08 04:28:19 字數 1253 閱讀 3580

電腦科學

中,折半搜尋

,也稱二分查詢演算法

、二分搜尋

,是一種在有序陣列中查詢某一特定元素的

搜尋演算法

。搜素過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜素過程結束;如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一樣從中間元素開始比較。如果在某一步驟陣列為空,則代表找不到。這種搜尋演算法每一次比較都使搜尋範圍縮小一半。

時間複雜度折半搜尋每次把搜尋區域減少一半,時間複雜度為

。(n代表集合中元素的個數)空間複雜度

。雖以遞迴形式定義,但是尾遞迴,可改寫為迴圈。

c**如下:

1 #include2 #include

3 #include4 #include5 #include678

#define compare(x,y) (((x) < (y)) ? -1 : ((x) == (y)) ? 0 : 1)910

/*11

int compare(int x, int y)

12 else if(x == y) else 20}

21*/

2223

24/*

非遞迴**

*/25

int binsearch(int list, int searchchnumm, int left, int

right)

2643}44

return -1;45

}464748

49/*

遞迴**

*/50

int binsearch(int list, int searchchnumm, int left, int

right)

5168}69

return -1;70

}7172int

main()73;

75int searchnum = 5;76

intlength;

77 length = sizeof(list) / sizeof(int

);78 printf("

%d\n

",length);

79 printf("

%d\n

",binsearch(list,searchnum,0

,length));

80return

0;

81 }

查詢演算法 折半查詢演算法

折半查詢演算法 binary search param a 乙個有序的集合 本次為由小到大 param x 需要查詢的值 ps 首先使用折半演算法的時候 集合必須是有序的 eg a 1,3,5,7,9 x 3 a mid low height 1,3,5,7,9 2 0 1 1,3 0 1 1 3 ...

查詢演算法 折半查詢

本小節知識點 1.掌握 基本思路 2.掌握 實現步驟 3.了解 練習 1.基本思路 在有序表中,取中間元素作為比較物件,若給定值與中間元素的要查詢的數相等,則查詢成功 若給定值小於中間元素的要查詢的數,則在中間元素的左半區繼續查詢 若給定值大於中間元素的要查詢的數,則在中間元素的右半區繼續查詢。不斷...

折半查詢演算法

折半查詢法 從表列中查乙個數最簡單的方法是從第1個數開始順序查詢,將要找的數與表列中的 數一一比較,直到找到為止 如果表列中無此數,則應找到最後乙個數,然後判定 找不到 但這種 順序查詢法 效率較低。如果表列中有1000個數,且要找的數恰恰是第1000個數,則要進行1000次比較才得到結果。平均比較...