計算機, 程序設計
二進制搜索 - 最簡單的方法之一,找到一個數組中的元素
很多時候,程序員,即使是初學者,面對事實,那就是一組數字,它必須找到一個具體的數字。 正是這種集合稱為數組。 並找到它的項目,也有無數種方法。 但他們最簡單的可以考慮在合適的二進制搜索。 這是什麼方法? 以及如何實現二進制搜索? 帕斯卡爾是這樣一個程序的組織最簡單的環境,所以我們會利用它來研究。
首先,分析一下,什麼是這種方法的優點,更是讓我們可以理解,
那麼,什麼是這種方法的工作原理? 立即將其應該說,二進制搜索的工作原理是不以任何陣列,但只能在一個有序組數字。 在陣列中的每個步驟中取出中間元件(意味著該元素的數量)。 如果所需的 數量大於 平均值,那麼所有剩下的,也就是低於平均電池,可以被丟棄,而不是放在那兒。 反之,如果低於這個平均水平 - 這些數字向右之中,你不能搜索。 然後選擇一個新的搜索區,其中第一個元素將是整個陣列的中間元素,最後一個和最後的意志。 新字段的平均數量將是所有的段,即,(最後一個元素+整個陣列的中間元件)/ 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,這是必需的號碼。 在完成此任務 - 12號發現。
Similar articles
Trending Now