§ 20. Выкарыстанне бібліятэчных функцый для сартавання і пошуку даных
20.3. Бінарны пошук
Калі масіў адсартаваны, то для пошуку элемента x можна ўжываць алгарытм бінарнага пошуку. Алгарытм дыхатаміі рэалізаваны ў некалькіх функцыях:
У якасці параметраў задаюцца ітэратары, якія паказваюць дыяпазон пошуку і шуканае значэнне. Функцыі могуць мець чацвёрты параметр — кампаратар, які паказвае на парадак сартавання элементаў у масіве. Прыклад 20.5. Дадзены лінейны адсартаваны масіў цэлых лікаў. Напісаць праграму, якая атрымае колькасць элементаў, меншых за x і большых за y. Масіў упарадкаваны па спаданні. Даныя прачытаць з файла. Лікі x і y увесці з клавіятуры. Этапы выканання задання I. Зыходныя даныя: пераменныя n — колькасць лікаў у масіве, a — масіў, лікі x і y. II. Вынік: колькасць элементаў, меншых за x і большых за y. III. Алгарытм рашэння задачы. 1. Увод зыходных даных. 2. Для рашэння задачы будзем выкарыстоўваць алгарытм бінарнага пошуку. 2.1. Для пошуку n1 — нумару першага значэння, меншага за x, выкарыстаем функцыю upper_bound. |
Функцыя equal_range вяртае дыяпазон, які змяшчае ўсе элементы, роўныя x. Дыяпазон вызначаецца двума ітэратарамі, першы паказвае на першы элемент, не меншы (роўны ці большы), чым x, другі паказвае на першы элемент, большы, чым x. Першы ітэратар можа быць атрыманы выкарыстаннем lower_bound(), другі — upper_bound(). Вяртаемым значэннем з’яўляецца тып пара (pair), які змяшчае два ітэратары. Для выкарыстання тыпу даных pair неабходна бібліятэка utility. V. Праграма:
VI. Тэсціраванне. Аналіз вынікаў. Значэнне 7 — нумар першага, меншага за 88, а значэнне 8 — нумар першага, большага за 82. |