49522 (Языки и технология программирования), страница 5
Описание файла
Документ из архива "Языки и технология программирования", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "49522"
Текст 5 страницы из документа "49522"
program Poisk2a;
var A:array[1..101] of integer;
N,X,i:integer;
begin
read(N); {N<=100}
for i:=1 to N do read(A[i]);
read(X);
A[N+1]:=X; {установка барьера дополнительным элементом}
i:=1; {i:=0;}
while A[i]<>X do i:=i+1;
{repeat i:=i+1; until A[i]=X;}
if i<=N then write('первое вхождение числа ',X,' в массив A на ',i,' месте')
else write('не нашли');
end.
program Poisk2b;
var A:array[1..100] of integer;
N,X,i,y:integer;
begin
read(N); {N<=100}
for i:=1 to N do read(A[i]);
read(X);
y:=A[N]; {сохранение последнего элемента}
A[N]:=X; {установка барьера на последнее место массива}
i:=1; {i:=0;}
while A[i]<>X do i:=i+1;
{repeat i:=i+1; until A[i]=X;}
if (i write('первое вхождение числа ',X,' в массив A на ',i,' месте') else write('не нашли'); A[N]:=y; {восстановление последнего элемента массива} end. ДВОИЧНЫЙ (БИНАРНЫЙ) ПОИСК Алгоритм двоичного поиска можно использовать для поиска элемента с заданным свойством только в массивах, упорядоченных по этому свойству. Так при поиске числа с заданным значением необходимо иметь массив, упорядоченный по возрастанию или по убыванию значений элементов. А, например, при поиске числа с заданной суммой цифр массив должен быть упорядочен по возрастанию или по убыванию сумм цифр элементов. Идея алгоритма состоит в том, что массив каждый раз делится пополам и выбирается та часть, где может находиться нужный элемент. Деление продолжается пока часть массива для поиска больше одного элемента, после чего остается проверить этот оставшийся элемент на выполнение условия поиска. Существуют две модификации этого алгоритма для поиска первого и последнего вхождения. Все зависит от того, как выбирается средний элемент: округлением в меньшую или большую сторону. В первом случае средний элемент относится к левой части массива, а во втором - к правой. В процессе работы алгоритма двоичного поиска размер фрагмента, где этот поиск должен продолжаться, каждый раз уменьшается примерно в два раза. Это обеспечивает вычислительную сложность алгоритма порядка логарифма N по основанию 2, где N - количество элементов массива. ПРИМЕР: Поиск в упорядоченном по возрастанию массиве первого вхождения числа X. program Poisk3a; var A:array[1..100] of integer; N,X,left,right:integer; begin read(N); {N<=100} write('введите упорядоченный по возрастанию массив'); for i:=1 to N do read(A[i]); read(X); left:=1; right:=N; {левая и правая граница фрагмента для поиска}