§ 20. Выкарыстанне бібліятэчных функцый для сартавання і пошуку даных
20.1. Лінейны пошук элемента
Для арганізацыі лінейнага пошуку элемента ў масіве можна выкарыстоўваць наступныя функцыі:
Ва ўсіх гэтых функцый тры параметры. Першыя два параметры з'яўляюцца ітэратарамі, якія вызначаюць дыяпазон для пошуку ў масіве, трэці задае ўмову пошуку. Пры гэтым левая мяжа дыяпазону ўваходзіць у вобласць пошуку, а правая — не. Гэта значыць дыяпазон пошуку з’яўляецца паўінтэрвалам. Калі пошук ажыццяўляецца ва ўсім вектары, то выкарыстоўваюцца ітэратры begin() и end(). У якасці выніку функцыі find і find_if выдаюць значэнне ітэратара, які паказвае на першы элемент, што адпавядае пошукаваму запыту. Кампаратар для функцый, якія рэалізуюць пошук элемента ў дыяпазоне, мае адзін параметр. Кампаратар вяртае значэнне true, калі элемент задавальняе ўмову пошуку, і false, калі не. Функцыя пошуку перадае ў кампаратар па чарзе значэнні з дыяпазону пошуку. Як толькі для якога-небудзь значэння атрымалі true, работа пошукавай функцыі спыняецца. Калі элемент не знойдзены, функцыя вяртае ітэратар на правую мяжу вобласці пошуку. Прыклад 20.1. Дадзены лінейны масіў цэлых лікаў. Напісаць праграму, якая: 1) знойдзе пазіцыю элемента, роўнага x; 2) знойдзе пазіцыю элемента, кратнага x; 3) палічыць колькасць элементаў, роўных x; 4) палічыць колькасць элементаў, кратных x. Этапы выканання задання I. Зыходныя даныя: пераменныя n — колькасць лікаў у масіве, a — масіў. II. Вынік: пазіцыі элементаў n1 і n2 (пункты 1 і 2) і колькасць элементаў k1 і k2 (пункты 3 і 4). III. Алгарытм рашэння задачы. 1. Увод зыходных даных. Даныя згенерыруем выпадковым чынам. 2.1. find для пункта 1. 3. Вывад выніку. IV. Апісанне пераменных: n, k1, k2, n1, n2, x – int, a – vector<int>. Функцыі min_element і max_element і max_element вяртаюць ітэратар на мінімальнае і максімальнае значэнні элементаў у дыяпазоне. Прыклад 20.2. Дадзены лінейны масіў цэлых лікаў. Напісаць праграму, якая знойдзе мінімальны і максімальны элементы ў масіве. Этапы выканання задання I. Зыходныя даныя: пераменныя n — колькасць лікаў у масіве, a — масіў. II. Вынік: пазіцыі мінімальнага і максімальнага элементаў nmin і nmax і іх значэнні. III. Алгарытм рашэння задачы.
|
V. Праграма:
VI. Тэсціраванне. VII. Аналіз вынікаў. Індэкс ліку 3 у масіве роўны 1, а таксама гэты лік кратны самому сабе. У масіве адзін лік, роўны 3, і два лікі (3 і 18), кратныя 3. Звярніце ўвагу на тое, што пераменная x апісана як глабальная пераменная, паколькі яна выкарыстоўваецца як у функцыі main, так і ў кампаратары comp. V. Праграма:
VI. Тестирование. Функцыі min_element і max_element могуць мець трэці параметр — кампаратар, які вызначае правіла парадку для элементаў паказанага дыяпазону. |