Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Линейный поиск




Алгоритмы поиска информации

Пусть имеется некоторый набор данных и требуется определить, где в этом наборе находится заданный элемент (и есть ли он в наборе). Такая задача называется задачей поиска. Большинство задач поиска сводится к поиску в таблице (массиве) элемента с заданным значением.

 

Пример

 

Написать программу поиска элемента x в массиве из n элементов. Значение элемента x вводится с клавиатуры.

 

Решение

 

Пусть имеются следующие описания:

Const n = 10; { размерность массива }

Var a: array (1...n) Of Integer;

{ массив из n элементов целого типа }

x: Integer; { искомый элемент целого типа }

В данном случае известно только значение разыскиваемого элемента, никакой дополнительной информации о нем или о массиве, в котором его надо искать, нет. Проверка одного элемента не дает никакой информации об остальных. Поэтому для решения задачи разумно применить очевидный метод - последовательный просмотр массива и сравнение значения очередного рассматриваемого элемента с данным. Если значение очередного элемента совпадает с x, то запомним его номер в переменной к.

For i: =1 To n Do If a[i] = x Then k: = i;

Этот способ решения поставленной задачи, безусловно, приводит к цели, но обладает рядом существенных недостатков:

· если значение x встречается в массиве несколько раз, то найдено будет последнее из них;

· после того, как нужное значение уже найдено, массив просматривается до конца, то есть всегда выполняется n сравнений.

Разумно прекратить просмотр сразу после обнаружения заданного элемента. Так как в этом случае число повторений не известно, необходимо использовать цикл с предусловием. В результате:

- либо будет найден искомый элемент, то есть найдется такой индекс i, что а [ i ] = x;

- либо будет просмотрен весь массив, и искомый элемент не обнаружится.

Таким образом, поскольку нужно продолжать поиск до обнаружения искомого элемента или до конца массива, условие окончания цикла может выглядеть так:

While (i <= n) And (a[ i ]<> x) Do Inc (i);

 

Примечание: Необходимо обратить внимание на порядок простых условий в составном условии цикла. Здесь предполагается, что второе условие не проверяется, если результат логического выражения ясен после проверки первого условия. В противном случае возникнет отказ из-за выхода индекса за границы массива.

 

Программа линейного поиска:

 

program n6;

const n=5;

var a:array[1..n] of integer;

{ массив из n элементов целого типа }

x:integer; { искомый элемент целого типа }

i,k:integer;

begin

writeln('Введите исходный массив:');

for i:=1 to n do read(a[i]);

writeln('Введите x');

readln(x);

for i:=1 to n do if a[i]=x then k:=i;

while (i<=n) and (a[i]<>x) do inc(i);

writeln('a[',k,']=',x,'=x');

end.

 




Поделиться с друзьями:


Дата добавления: 2014-11-09; Просмотров: 386; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.