程式設計演算法之陣列二分查詢法

2021-07-02 02:00:29 字數 983 閱讀 4279

查詢資料,是每個程式設計師必備的技能,今天介紹一種在陣列中快速查詢的方法:二分查詢法,

二分法在前面已經介紹過了,取乙個數字的中間值,如果不對,再取。。 一直迴圈到最終的結果。

此方法比直接在for迴圈裡面迴圈遍歷話費時間要少的多。

下面介紹一種常見的二分查詢法。

// 程式設計演算法之陣列二分查詢法.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include int arrnum[1024];

int seachnum = 733;

int start = 0;

int end = 1023;

int middle;

int _tmain(int argc, _tchar* argv)

while (startarrnum[middle])

else

printf("start=%d midlle=%d end=%d\n",start ,middle,end); }

return 0;

}

先定義乙個陣列。我們要查詢的數字就在這個陣列裡面,再定義乙個開始查詢的節點跟結束查詢的節點。

for迴圈裡是給這個陣列初始化。

while迴圈就是這個演算法的核心了

首先給midlle賦值這個陣列的中間值,然後跟查詢的值對比,如果正好相等,那麼跳出迴圈查詢結束,如不相等,就會有兩種情況 查詢的值 大於中間值和小於中間值。

那麼我們來分析如果查詢值大於中間值會怎樣, 大於中間值,說明我們的end值是沒有錯的,是start小,我們就給srart重新賦值為middle的下乙個值,就是讓它下次擷取大的那一半。

如果查詢值小於中間值,說明我們的start是沒錯的,end值選的太大,那麼我們就給end重新賦值為middle的上乙個。擷取小的一半。

此演算法我們8步就找到了733 是不是很節省時間呢?

注意:此演算法適用於有序的陣列排列。

陣列 二分查詢法

二分查詢法又稱折半查詢,優點是比較查詢次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。需求 定義乙個函式接收乙個陣列物件和乙個查詢的目標物件,函式要返回該物件的索引。不存在則返回 1 author final public class day1 int index sea...

演算法 二分查詢法

例題 設計乙個函式,接收乙個有序陣列和乙個元素,如果指定的元素包含在陣列中,則返回其位置。看見這道題,我們正常的想法為遍歷陣列的所有元素然後乙個乙個的與數值相比較,如果相等,返回索引,如果在迴圈執行完後沒有退出函式的話,就返回false。為 var count 0 計數 function looku...

查詢演算法 二分查詢法

二分查詢法是經典的入門演算法,以高效和廣泛應用而著稱.演算法是由靜態方法rank 實現的,它接受乙個整數鍵和乙個已經有序的int 陣列作為引數。如果該鍵存在於陣列中 則返回它的索引,否則返回 1。演算法使用兩個變數low 和high,並保證如果鍵在陣列中則它一定在 a low high 中,然後方法...