計算機程序設計

二進制搜索 - 最簡單的方法之一,找到一個數組中的元素

很多時候,程序員,即使是初學者,面對事實,那就是一組數字,它必須找到一個具體的數字。 正是這種集合稱為數組。 並找到它的項目,也有無數種方法。 但他們最簡單的可以考慮在合適的二進制搜索。 這是什麼方法? 以及如何實現二進制搜索? 帕斯卡爾是這樣一個程序的組織最簡單的環境,所以我們會利用它來研究。

首先,分析一下,什麼是這種方法的優點,更是讓我們可以理解, 什麼是在專題研究的點。 所以,讓我們有至少億元素,這就需要找到一些維數組。 當然,這個問題可以容易地通過簡單的線性搜索,在此我們使用的是週期將所需要的元件比較所有那些陣列中解決。 問題是,這個想法的實施將花費太多時間。 在一個簡單的Pascal程序分為幾個療程,三線的主要文字,你不會注意到它,但是當我們來到了大量分支機構和良好的功能的一個或大或小的項目,該項目將隨時被加載時間過長。 特別是,如果計算機是一個薄弱的表現。 因此,存在一個二進制搜索,這減少了搜索時間的至少兩倍。

那麼,什麼是這種方法的工作原理? 立即將其應該說,二進制搜索的工作原理是不以任何陣列,但只能在一個有序組數字。 在陣列中的每個步驟中取出中間元件(意味著該元素的數量)。 如果所需的 數量大於 平均值,那麼所有剩下的,也就是低於平均電池,可以被丟棄,而不是放在那兒。 反之,如果低於這個平均水平 - 這些數字向右之中,你不能搜索。 然後選擇一個新的搜索區,其中第一個元素將是整個陣列的中間元素,最後一個和最後的意志。 新字段的平均數量將是所有的段,即,(最後一個元素+整個陣列的中間元件)/ 2的1/4。 再次,進行相同的操作 - 與平均編號的數組的比較。 如果目標值小於平均值,我們拒絕右側,也做下一個,到現在為止這中間元素不會期望。

當然,最好是看看如何編寫二進制搜索的例子。 帕斯卡爾這裡將適合任何人 - 版本並不重要。 讓我們寫一個簡單的程序。

它是1以名稱“馬西沃”的陣列到h,變量指示搜索的下邊界,被稱為“NIZ”,上限,被稱為“verh”,平均搜索術語 - “sredn”; 和所需數量 - “ISK”。

所以,首先我們指定搜索範圍的上限和下限:

NIZ:= 1;
verh:= H + 1;

然後組織循環“,直到底部低於上限”:

雖然NIZ 開始

在每一步中,我們把段2:

sredn:=(NIZ + verh)DIV 2; {使用函數div,因為沒有剩餘的鴻溝}

回顧每一次。 因為如果介質所需的項目已經被發現,中斷週期:

іfsredn = ISK然後打破;

如果超過所希望的該陣列的中間元件,丟棄左側,即,平均的上邊界指定元素:

如果馬西沃[sredn]> ISK然後verh:= sredn;

而如果相反,它使下邊界:

否則NIZ:= sredn;
結束;

這一切都將在節目中。

讓我們考慮如何將它看二進制方法在實踐中。 考慮這個陣列:1,3,5,7,10,12,18,它會尋求數字12。

我們總共有7個元素,因此將第四介質,值7。

1 3 7 10 12 18

由於超過12,如圖7所示,1.3和5的元件,就可以丟棄。 然後,我們已經拿到了4號,4/2無殘留為2。於是,新元素將是10的平均水平。

7 10 12 18

由於圖12是大於10,我們丟棄7.僅保持在10,12和18。

在這裡,中間元素已經是12,這是必需的號碼。 在完成此任務 - 12號發現。

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 zhtw.atomiyme.com. Theme powered by WordPress.