Будем рассматривать неотсортированные таблицы.
K - количество элементов в таблице
N - длина вектора представления элементов таблицы
Векторное представление:
type элемент = record key ... body ...;
таблица = array [1..N] of элемент
end
key=...
body=...
Время поиска K/2
Списковое представление:
type элемент = record key... body ...;
связь=элемент;
procedure вставить (var table:таблица; var ключ:key; тело:body)
begin
if последний>=N then write(‘нет места’) else begin
последний:=последний+1;
table[последний].key:=ключ;
table[последний].body:=тело;
end;
with table[последний] do
key:=ключ;
body:=тело;
end
end
Предполагаем, что длина ключа и тела одна и та же.
procedure изменить(var table:таблица; var последний:integer)
var i,j:integer;
begin
table[последний+1].key:=ключ;
i:=1;
while not (table[i].key=ключ) do {это условие хотя бы раз выполняется}
i:=i+1;
if i=последний+1 then write(‘нет записи с ‘,ключ) else table[i].тело:=тело
end
Операции вставить и изменить имеют сложность K/2, где К - количество элементов в таблице.
Procedure Исключить(var table:таблица; var последний:integer)
var i:integer
begin {найти такое i: table[i].ключ=ключ и удалить этот элемент из table}
i:=1; | процедура
table[последний+1].ключ:=ключ; |
while table[i].ключ<>ключ do i:=i+1{условие инвариантности цикла}| поиска
if i<=последний then begin
while i<>последний do begin
table[i]:=table[i+1];
i:=i+1
end;
последний:=последний-1;
end else write(‘Такого элемента нет’)
end.
Сложность: К/2 - поиск
К/2 - сдвиг
К/2+К/2=К, то есть сложность линейна
body=...
key=...
type ссылка=звено;
звено=record ключ:key;
тело:body;
связь:ссылка
end;
var таблица:ссылка;
procedure ВСТАВИТЬ(var таблица,последний:ссылка; ключ: key; тело:body)
var элемент:звено;
begin
new(элемент);
элемент.ключ:=ключ;
элемент.тело:=тело;
элемент.связь:=nil;
последний.связь:=элемент;
последний:=элемент;
if таблица=nil then таблица:=элемент else последний.связь:=элемент;
последний:=элемент
end
Сложность не зависит от длины таблицы
procedure изменить (var таблица, последний:ссылка; ключ:key; тело:body)
{найти таблица.ключ = ключ и заменить таблица.тело на тело}
var следующий:ссылка;
begin {поиск элемента с заданным ключом}
if таблица<> nil then begin
new(следующий);
следующий.ключ:=ключ:
следующий.связь:= nil;
последний.связь:=следующий;
следующий:=таблица;
end;
{поиск}
while следующий.ключ<> ключ do следующий:=следующий.связь;
if последний.связь<>следующий then следующий.тело:=тело
else write(‘элемент не найден’);
{нужно уничтожить сгенерированный элемент}
dispose(последний.связь)
end
Сложность К/2
procedure удалить(var таблица, последний: ссылка; ключ: key);
var текущий: ссылка;
{если элемент последний или первый, то рассмотрим отдельно, иначе сдвинем ссылку и освободим память}
if {таблица пуста} then write (‘Таблица пуста’) else
if {в таблице один элемент} then
if {единственный элемент есть искомый} then {сделать таблицу пустой}
else write(‘нет искомого элемента в таблице’)
else write (‘нет искомого элемента в таблице’)
else {поиск в таблице}
new(текущий);
текущий.ключ=ключ;
текущий.связь:=nil;
последний.связь:=текущий;
текущий:=таблица;
while текущий.ключ<> ключ do begin
предок:=текущий;
текущий:=текущий.связь
end
if {первый элемент - искомый} then begin
текущий:=таблица;
таблица:= текущий.связь;
dispose(текущий)
end
if {последний- искомый (текущий=последний)} then begin
последний:=предок;
последний.связь:=nil;
dispose(текущий);
dispose(текущий.связь)
end
else begin
предок.связь:=текущий.связь;
dispose(текущий);
dispose(последний.связь)
end
end
Сложность = сложности поиска по линейному списку К/2
Таблицу нужно формировать так, чтобы наиболее часто встречаемые ключи находились в начале списка. Зная частоту встреча7емости ключей и отсортировав таблицу можно улучшить эффективность.
Сортированные последовательные таблицы.
Типы ключа и тела далее просты.
procedure вставить(var таблица: table; var последний: integer; ключ: key; тело:body)
var i:integer;
begin
if последний = N then write(‘таблица заполнена’) else begin
i:=последний;
{считаем, что все ключи упорядоченны по возрастанию, то есть
I(Kj)=I(Kt)+1
(Kj, Kt)R и не s: (Kj, Ks)R (Ks, Kt)R}
while (i>=1) and (таблица[i].ключ>ключ) do begin
таблица[i+1].ключ:=таблица[i].ключ;
таблица[i+1].тело:=таблица[i].тело;
i:=i-1
end;
таблица[i].тело:=тело;
таблица[i].ключ:=ключ
end
end
Сложность операции вставки для отсортированных таблиц возросла.
Выводы:
1) основная сложность операций в таблице - поиск. Для данной - линейна.
2)векторное представление хорошо, когда операции удаления и вставки относительно редки, а, если же нет, то предпочтение нужно отдавать списковому представлению.
3) Для последовательных таблиц понижение сложности можно достичь за счет использования информации о встречаемости ключей. Операцию поиска можно сократить за счёт сокращения длины путей поиска.
Другие работы по теме:
Проверка адекватности выбранных моделей
Построение анализа случайной компоненты для проверки адекватности выбранных моделей реальному процессу (в частности, адекватности полученной кривой роста). Оценка параметров модели в условиях автокорреляции и определение критерия автокорреляции.
Веланский Данило Михайлович
Исходил из тождества бытия и мышления, критиковал агностицизм, развивал идеи о всеобщей взаимосвязи /борьба полярностей, триада/. Оказал влияние на М. Павлова и любомудров.
Теплогазовентиляция
Таблица для гидравлического расчета трубопроводов при =0,5 мм =958,4 кгс/м Таблица 9.11 S в мм 32*2,5 38*2,5 45*2,5 57*3,5 76*3,5 G в т/ч
История виски
"Aque vitae", название спиртного напитка латинских монастырей, превратилось на старокельтском языке шотландцев и ирландцев в "uisque baugh". Последовательные изменения в языке привели к образованию слова "виски".
Счетчики
Это устройства предназначенные для подсчета числа сигналов, поступающих на его вход и фиксация этого числа в виде кода хранящегося в триггерах.
Умножение “треугольником”
Предлагаю ознакомиться с новым способом умножения чисел. Схожесть образующейся при вычислении матрицы из цифр, с треугольником относительна, но все же есть, особенно при умножении трехзначных чисел и выше.
Решение задач способом пропорций
Graphics Graphics В чем состоит способ пропорций? В чем состоит способ пропорций? Способ пропорций состоит в следующем: 1. Неизвестное число обозначается буквой Х. 2. Условие задачи записывается в виде таблицы. 3. Определяется вид зависимости. 4. Ставятся стрелки, соответствующие виду пропорции. 5.Записывается пропорция. 6.Находится неизвестный член пропорции.
Закономерность распределения простых чисел (дополнение)
Я написал предыдущий ряд разностей по принципу личной симпатии. Подстраховался от критики, ежели бы у кого-то не получилось составить систему уравнений, например, с разностью d = 7, ибо для нетренированных рук могут возникнуть трудности.
Проверка адекватности выбранных моделей
Проверка адекватности выбранных моделей реальному процессу ( в частности, адекватности полученной кривой роста) строится на анализе случайной компоненты. Случайная остаточная компонента получается после выделения из исследуемого ряда систематической составляющей (тренда и периодической составляющей, если она присутствует во временном ряду).
Статистические таблицы. Их виды
Выполнила студентка 4 курса Шведова А.А. Статистические таблицы. Их виды Понятие статистической таблицы Статистическая таблица – это наиболее рациональная форма изложения и изображения статистической сводки. Таблица состоит из пересечения граф и строк.
Шарп, Абрахам
Абрахам Шарп (англ. Abraham Sharp (1653—1742)) — английский астроном и математик. Биография Родился близ Брэдфорда, в графстве Йоркшир, был девятым ребёнком в семье, точная дата рождения неизвестна, установлено лишь, что Абрахам был крещён в Брэдфорде 1 июня 1653 [1]. Первоначальное образование получил в деревенской школе, после чего продолжил обучение коммерческой арифметике в Ливерпуле.
Список президентов США
Президенты США избираются с 1789 года. Последовательные сроки традиционно нумеруются как одно президентство (например, Вашингтон, избранный на два срока подряд, был 1-м президентом, а не 1-м и 2-м), а единственный на настоящее время случай нахождения в должности с перерывом (Гровер Кливленд) считается как два президентства (22-й и 24-й президент).
Президентские выборы в США 2004
Введение 1 Кандидатуры 1.1 Кандидат от Республиканской партии 1.2 Кандидаты от Демократической партии 2 Результаты Список литературы Введение Выборы президента Соединённых Штатов Америки 2004 прошли 2 ноября 2004 года. Это были 55-ые последовательные выборы президента и вице-президента США на четырёхлетний срок.
Кайтай синсё
«Кайтай синсё» (яп. 解体新書, かいたいしんしょ?, «Новый учебник анатомии») — первый японский учебник по европейской анатомии, изданный в 1774 году. Состоит с 4 томов текста и 1 тома иллюстраций.
Электронные таблицы Excel
Overview Диаграмма1 Диаграмма3 Диаграмма2 Лист1 Sheet 1: Диаграмма1 Sheet 2: Диаграмма3 Sheet 3: Диаграмма2 Sheet 4: Лист1 остатки денежных средств на счетах клиентов
Создание баз данных в Microsoft Access
Министерство просвещения Украины Национальная Горная Академия СОЗДАНИЕ ФАЙЛА И ТАБЛИЦ БАЗЫ ДАННЫХ МАСТЕРОМ И ПО ЗАДАННОЙ ЛОГИЧЕСКОЙ МОДЕЛИ Лабораторная работа Access 97
Microsoft Exel
ВОПРОСЫ К ЭКЗАМЕНУ ПО ИНФОРМАТИКЕ 2 семестр Табличные процессоры. Классификация. Табличный процессор Excel. Назначение. Основные приемы работы в Excel: ведение рабочей книги.
Создание базы данных в MySQL
Синтаксис, типы данных, используемые в базе данных MySQL. Создание и удаление базы данных, создание таблицы и удаление таблицы, изменение ее свойств. Переименование, вставка и удаление столбцов, изменение их свойств. Обновление и поиск записей в таблице.
Разработка программной системы для работника деканата
База данных для работников деканата для хранения сведений о группах и студентах и о результатах текущей сессии. Построение инфологической модели предметной области. Создание базы данных в Microsoft Access 2000. Создание элементов управления базой данных.
Создание базы данных, состоящей из одной таблицы
Проектирование структуры базы данных. Конструирование структуры будущих таблиц баз данных, основные приемы их заполнения и редактирования. Простая сортировка значений таблицы. Поиск записей по образцу. Как правильно сохранить и загрузить базу данных.
Серверные жесткие диски
2005 г. стал переломным в многолетней истории интерфейса SCSI — он положил начало тотальному переходу на последовательные технологии. Кроме того, появились жесткие диски с оптическим интерфейсом Fibre Channel нового поколения.
Задача по информатике в Acces
Содержание Практическое задание 1. Некая фирма занимается реализацией научной литературы. Клиентами фирмы являются предприятия, учреждения, учебные заведения и т.п. Для учета и анализа заказов необходимо создать базу данных.
Электронные таблицы, назначение и основные функции
Электронные таблицы (или табличные процессоры) — это прикладные программы, предназначенные для проведения табличных расчетов. В электронных таблицах вся обрабатываемая информация располагается в ячейках прямоугольной таблицы. Отличие электронной таблицы от простой заключается в том, что в ней есть «поля» (столбцы таблицы), значения которых вычисляются через значения других «полей», где располагаются исходные данные.
Логическое устройство компьютера
Микропроцессор. Самым главным элементом в компьютере, его «мозгом», является микропроцессор — небольшая (в несколько сантиметров) электронная схема, выполняющая все вычисления и обработку информации. Микропроцессор умеет производить сотни различных операций и делает это со скоростью в несколько десятков или даже сотен миллионов операций в секунду.
Диагностика портов ЭВМ
Последовательная передача данных Микропроцессорная система без средств ввода и вывода оказывается бесполезной. Характеристики и объемы ввода и вывода в системе определяются, в первую очередь, спецификой ее применения — например, в микропроцессорной системе управления некоторым промышленным процессом не требуется клавиатура и дисплей, так как почти наверняка ее дистанционно программирует и контролирует главный микрокомпьютер (с использованием последовательной линии RS–232C).
Создание базы данных состоящей из одной таблицы
Проектирование структуры базы данных. Конструирование структуры будущих таблиц баз данных основные приемы их заполнения и редактирования. Простая сортировка значений таблицы. Поиск записей по образцу. Как правильно сохранить и загрузить базу данных.
Онтогенез у животных
Почему у большинства животных онтогенез начинается с оплодотворения одной яйцеклетки? Какое значение имеют половые различия для организмов?