Поиск записи

Довольно часто обработка списка заключается в поиске отдельной записи с заданным значением какого-либо ее подполя и в операциях над этой записью (копирование всей записи или некоторых ее подполей, изменение значения какого-нибудь ее подполя и т. п.).
Программа поиска должна просмотреть список не до конца, а лишь до тех пор, пока не обнаружится искомая запись. Если записи в списке никак по отношению к значениям эталонного подполя не упорядочены, то положение искомой записи в списке можно считать случайным. Если в списке n записей, то в среднем приходится просмотреть (n + 1)/2 записей, прежде чем будет найдена нужная.
Возможны и другие организации списков, в которых адрес искомой записи однозначно вычисляется по значению ее ключа. Подобные действия компьютер выполняет, когда пользователь ищет картинки для рабочего стола или просто нужны изображения для заставки на монитор или для размещения их в качестве контента на Интернет-ресурсе. Большой выбор картинок вы найдете на web-сайте http://www.wallsbox.ru.
Ключ может иметь любую последовательность битов, которые размещены в подполе длиной не более 256 байт. Считается, что записи имеют одинаковую длину L и упорядочены в списке по возрастанию значения ключа (в смысле команды СLС). Предполагается также, что список не содержит записи ключей с одинаковыми значениями. В таком списке поиск записи с заданным ключом будет выполняться медленнее, чем в списках, имеющих вычисляемые адреса, однако его можно выполнить все же быстрее, чем, если воспользоваться последовательным просмотром записей списка. Чтобы осуществить такой ускоренный поиск применяются разные методы. Один из них — метод деления пополам.