русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Линейный поиск в массиве


Дата добавления: 2014-02-04; просмотров: 940; Нарушение авторских прав


Алгоритмы

Дерево

Список

Массив

Это наиболее простой вариант и довольно удобный, поскольку положение элемента в таблице однозначно определяется номером элемента в массиве. Если размер таблицы меняется в ходе работы с ней (данные время от времени добавляются или удаляются), то массив оказывается не очень экономичным: поскольку точное количество элементов заранее неизвестно, приходится заводить массив из большого количества элементов, часть из которых не будет использоваться, но будет занимать место в памяти.

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

const maxsize = 2000; {максимальный размер таблицы}

type tTable = record

a: array[1..maxsize] of tItem; {это сам массив}

n: integer; {а это - реальное число элементов}

end;

var Table: tTable;

Предполагается, что в любой момент времени данные таблицы хранятся в первых n элементах массива, а остальные считаются пустыми.

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

Как выглядит такая таблица на Паскале нам уже известно:

type tItemPtr = ^tItem; {указатель на элемент списка}

tItem = record {элемент списка}

key: tKey;

data: tData;

next: tItemPtr;

end;

tList: tItemPtr; {задаётся указателем на первый элемент}

var Table: tList {таблица является списком}

Как хранить и искать данные в двоичном дереве, мы уже знаем, а таблицу можно задать так:



type tItemPtr = ^tItem; {указатель на элемент}

tItem = record {элемент}

key: tKey;

data: tData;

left, right: tItemPtr;

end;

tTree = tItemPtr;

var Table: tTree; {таблица является деревом}

Пусть таблица представлена в виде массива. Тогда первое, что приходит в голову по поводу поиска элемента — это обход всех элементов, начиная с первого, до тех пор, пока не будет найден элемент с искомым ключом, или пока массив не кончится. Такой способ называется линейным поиском в неупорядоченном массиве. Оформим его на Паскале в виде процедуры:

procedure LinearSearch(var T:tTable; k:tKey; var index:integer);

var i: integer;



<== предыдущая лекция | следующая лекция ==>
Определения и описания структур данных | Линейный поиск в списке


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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