c 世上最好理解的二分查詢法

2021-10-02 03:15:14 字數 831 閱讀 4935

二分查詢(折半查詢)演算法是建立在有序陣列基礎上的。演算法思想為:

1.查詢過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則查詢過程結束;

2.如果某一待查詢元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟第1點一樣從中間元素開始繼續進行查詢。

3.如果在某一步驟陣列為空,則代表找不到。

接下來看例子:

int

getindexbyvalue_2fen

(int

*array,

int nvalue,

int nlength)

else

if(nvalue

)else

if(nvalue>array[nmid])}

return-1

;}void

main()

;int nindex =

getindexbyvalue_2fen

(a,88,10

);//第七個位置,應該輸出6

cout <<

"位置:"

<

cout << a[nindex]

<< endl;

system

("pause");

}

結果:

解釋:其實就是拿中間位置的元素和要查詢的元素比較大小,如果比要查的小,就砍掉左邊部分,將起始部分在中間位置+1,結束位置不變。反之砍掉右邊部分,起始位置不變,結束位置為中間位置-1.

二分查詢法

二分查詢要求 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...

二分查詢法

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