Binary Search 二分查詢

2022-06-09 13:51:10 字數 2054 閱讀 6596

採用二分法查詢時,資料需是排好序的。 基本思想:假設資料是按公升序排序的,對於給定值x,從序列的中間位置開始比較,如果當前位置值等於x,則查詢成功;若x小於當前位置值,則在數列的前半段 中查詢;若x大於當前位置值則在數列的後半段中繼續查詢,直到找到為止。

二分法查詢在針對大量有序排列的情況下發揮出很優越的效率,其時間複雜度o(lgn)。

**:

1/*2

author:mengmeng

3time:2016-6-27 23:33:49

4description:

5採用二分法查詢時,資料需是排好序的。

6基本思想:假設資料是按公升序排序的,對於給定值x,從序列的中間位置開始比較,

7如果當前位置值等於x,則查詢成功;若x小於當前位置值,則在數列的前半段 中查詢;

8若x大於當前位置值則在數列的後半段中繼續查詢,直到找到為止。9*/

10 #include 11

using

namespace

std;

1213

14int binarysearch(int data,int min,int max,int dest,bool

upordown)

1522 mid = (max + min) / 2;23

if (dest == data[mid])//

遞迴結束條件

24return

mid;

25if (upordown == true)//

公升序排列

2632

else

//降序排列

3339

404142}

43int main(void)44

;46int data2 = ;

47#if 0

48 cout << "

請參照下列數字:

"<

49 cout<< "

"<

54 cout << "

輸入你要查詢的目標:

"<

55int

dest;

56 cin >>dest;

57 cout <

----------------------------------------

"<

58int index = binarysearch(data1, 0, len - 1, dest,true

);59

#endif

60#if 1

61 cout << "

請參照下列數字:

"<

62 cout << "

"<

67 cout << "

輸入你要查詢的目標:

"<

68int

dest;

69 cin >>dest;

70 cout << "

----------------------------------------

"<

71int index = binarysearch(data2, 0, len - 1, dest, false

);72

#endif

73if (index!=-1

)74 cout << dest << "

在陣列中的位置為第

"<< index << "個"

<

75return0;

7677 }

執行結果:(1)公升序的情況:

(2)降序的情況:

二分查詢 Binary Search

打算重返c c 陣營,所以準備從演算法開始溫習,今天我們談到的是一種效率較高的查詢方法 二分查詢。什麼是二分查詢 二分查詢又稱折半查詢,它是一種效率較高的查詢方法。二分查詢要求 線性表是有序表,即表中結點按關鍵字有序,並且要用向量作為表的儲存結構。二分查詢的基本思想是 1 首先確定該區間的中點位置 ...

二分查詢 BinarySearch

前置條件 乙個有序的序列 假設公升序排列 在序列中查詢指定元素 演算法 首先與序列中間的元素進行比較,如果大於這個元素,就在當前序列的後半部分繼續查詢,如果小於這個元素,就在當前序列的前半部分繼續查詢,直到找到相同的元素,或者所查詢的序列範圍為空為止。int binarysearch vector ...

二分查詢 BinarySearch

二分查詢又稱為折半查詢 首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前 後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢...