-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbinary_search.os
34 lines (26 loc) · 1.69 KB
/
binary_search.os
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// Текст задачи: написать алгоритм бинарного поиска в отсортированном массиве элементов.
Функция БинарныйПоиск(ИскомыйЭлемент, ИсходныйМассив)
НижняяГраница = 0;
ВерхняяГраница = ИсходныйМассив.Количество() - 1;
Пока НижняяГраница <= ВерхняяГраница Цикл
СерединаИндекс = Цел((НижняяГраница + ВерхняяГраница) / 2);
Догадка = ИсходныйМассив[СерединаИндекс];
Если ИскомыйЭлемент = Догадка Тогда
Возврат СерединаИндекс;
ИначеЕсли ИскомыйЭлемент < Догадка Тогда
ВерхняяГраница = СерединаИндекс - 1;
Иначе
НижняяГраница = СерединаИндекс + 1;
КонецЕсли;
КонецЦикла;
Возврат -1; // Если ничего не нашлось, то возвращаем "индекс" -1, что означает "ничего".
КонецФункции
// Проверка работы функции.
НовыйМассив = Новый Массив;
НовыйМассив.Добавить(30);
НовыйМассив.Добавить(-60);
НовыйМассив.Добавить(25);
НовыйМассив.Добавить(19);
НовыйМассив.Добавить(103);
Сообщить(БинарныйПоиск(25, НовыйМассив));
Сообщить(БинарныйПоиск(100, НовыйМассив));