Алгоритм простого перебору

Нижче наведено текст програми пошуку в масиві цілих чисел. Перебір елементів масиву здійснюється інструкцією repeat, в тілі якої інструкція if порівнює поточний елемент масиву з зразком і привласнює змінної found значення true, якщо поточний елемент і зразок рівні.

Цикл завершується, якщо в масиві виявлено елемент, рівний зразком (в цьому випадку значення змінної found одно true), або якщо перевірені всі елементи масиву. Після закінчення циклу за значенням змінної found можна визначити, успішний пошук чи ні.

Вид діалогового вікна програми Пошук в масиві наведено на рис. 5.9.

Рис. 5.9. Діалогове вікно програми Пошук в масиві

Клацання на командному кнопці Пошук (Buttoni) запускає процедуру TForm1.Button1Click (її текст приведений в лістингу 5.7), яка з компонента stringGridi вводить масив, а з поля редагування Edit2 – число (зразок). Потім виконується перевірка, чи містить масив введене число. Після завершення перевірки процедура showMessage виводить повідомлення про результат пошуку.

Лістинг 5.7. Пошук в масиві

unit s_found_; interface
uses
Windows, Messages, SysUtils, Classes,

Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids;
type
TForm1 = Class (TForm)
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Edit2: TEdit;
StringGridi: TStringGrid;
procedure ButtonlClick (Sender: TObject);

private
{Private declarations}

public
{Public declarations)

end;
var
Form1: TForm1;
implementation
{$ R * .DFM}
{Пошук в масиві перебором}
procedure TForml.ButtonlClick (Sender: TObject);
const
SIZE = 5; var
a: array [1..SIZE] of integer; // масив
obr: integer; // зразок для пошуку
found: boolean; // TRUE - збіг зразка з елементом
// масиву
i: integer; // індекс елемента масиву
begin
// введення масиву for i: = l to SIZE do
a [i] : = StrToInt (StringGridl.Cells [i-1,0]);
// введення зразка для пошуку

obr : = StrToInt (edit2.text);
// пошук

found : = FALSE; // нехай потрібного елемента в масиві немає
i: = 1;
repeat
if a [i] = obr
then found: = TRUE else i: = i + 1;

until (I & gt; SIZE) or (found = TRUE);
if found
then ShowMessage ( 'Збіг з елементом номер'
+ IntToStr (i) + # 13 + 'Пошук успішний. ')

else ShowMessage ( 'Співпадінь зі зразком немає.');

end;
end.

Очевидно, що чим більше елементів в масиві і чим далі розташований потрібний елемент від початку масиву, тим довше програма буде шукати необхідний елемент.
Оскільки операції порівняння застосовні як до чисел, так і до рядків, даний алгоритм може використовуватися для пошуку як в числових, так і в строкових масивах.