二分查詢法之GGBond版

2021-10-10 06:05:41 字數 867 閱讀 2487

題目:利用二分查詢法,查詢乙個有序整數陣列中的目標值的下標。

二分查詢法又稱折半查詢法,是一種在有序整數陣列中查詢目的元素的一種方法。

1.找到左值head和右值end

2.中值middle=(head+end)/2

3.如果中值等於目標值則直接輸出答案,否則判斷目標值在左域還是右域(因為是有序陣列,所以通過大小就可以判斷啦)

4.若目標值在左域(右域),只需將右值(左值)替換為中值,繼續進行相同操作即可。

**如下:

#include

#include

intmain()

;int len =

sizeof

(a)/

sizeof

(a[0])

;/* 計算陣列長度 */

int number,middle;

/* number為需要搜尋的數,millde為中值下標 */

scanf_s

("%d"

,&number)

;int head =

0, end = len -1;

while

(head < end)

/* 二分法 */

printf

("%d\n"

, middle)

;return0;

}

$也可以使用函式遞迴

**如下:

int

binarysearch

(int

* arr,

int began,

int end,

int number)

}

二分查詢法

二分查詢要求 1.必須採用順序儲存結構 2.必須按關鍵字大小有序排列。優缺點 折半查詢法的優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。演算法思想 首先,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者...

二分查詢法

有序陣列中的find 方法 public int find long serchkey int lowerbound 0 int upperbound nelems 1 while true curin lowerbound upperbound 2 if a curin serchkey retu...

二分查詢法

演算法基本思想 二分查詢演算法的前置條件是,乙個已經排序好的序列 假設這個序列是公升序排列的 這樣在查詢所要查詢的元素時,首先與序列中間的元素進行比較,如果大於這個元素,就在當前序列的後半部分繼續查詢,如果小於這個元素,就在當前序列的前半部分繼續查詢,直到找到相同的元素,或者所查詢的序列範圍為空為止...