Таблицы (tables) Таблица - это совокупность записей, каждая из которых состоит из двух полей - ключа и тела: причем ключи обязательно должны быть различными:

Презентация:



Advertisements
Похожие презентации
Алгоритмы сортировки Алгоритмы сортировки отличаются друг от друга: - степенью эффективности ( кол-во сравнений); - кол-вом обменов, производимых в процессе.
Advertisements

Обработка массивов Сортировка. Сортировка массивов «…создается впечатление, что можно построить целый курс программирования, выбирая примеры только из.
Сортировка методом простого обмена (метод пузырька) Рекурсивная сортировка.
1 Программирование на языке Паскаль Часть II Тема 4. Сортировка массивов © К.Ю. Поляков,
Алгоритмы сортировки. 2 Сортировка Сортировка – это расстановка элементов массива в заданном порядке (по возрастанию, убыванию, последней цифре, сумме.
Урок 10. Сортировки 425 а1а2а3а4 Пример: Дан целочисленный массив А из 4-х элементов. 1 шаг. а1>a2? Да 3 b If a[1]>a[2] then begin b:=a[2]; a[2]:=a[1];
Задачи с использованием одномерных массивов 1. Опишите алгоритм подсчёта среднего значения положительных элементов в целочисленном массиве из 30 элементов.
Задачи с использованием одномерных массивов 1. Опишите алгоритм подсчёта среднего значения положительных элементов в целочисленном массиве из 30 элементов.
Классификация методов сортировки Сортировка вставкой и сортировка выбором.
К.Ю. Поляков, Е.А. Ерёмин, 2013 Программирование на языке Паскаль § 64. Сортировка 1.
Обменные сортировки:BubbleSort Алгоритм прямого обмена основывается на сравнении и смене позиций пары соседних элементов. Процесс продолжается до тех пор.
Задачи поиска в структурах данных Поиск - нахождение какой-либо конкретной информации в большом объеме ранее собранных данных. Данные делятся на записи,
Методы сортировки массива. Сортировкой или упорядочением массива называется расположение его элементов по возрастанию (или убыванию). Если не все элементы.
1 Программирование на языке Паскаль Тема 4. Сортировка массивов.
Поиск информации Задача поиска: где в заданной совокупности данных находится элемент, обладающий заданным свойством? Большинство задач поиска сводится.
О БРАБОТКА МАССИВОВ 1. Включение элемента в заданную позицию массива 2. Удаление элементов массива. Удаление элементов массива. Удаление элементов массива.
Сортировка одномерного массива Учитель информатики Александрова Т.П.
Сортировка массива. Одной из основных операций, производимых над массивами, являются операции сортировки или упорядочивания элементов массива по какому-либо.
Программирование на языке Паскаль Урок Сортировка массивов Рыжикова С. В. Учитель информатики МОУ СОШ 2 г. Волжского Волгоградской обл.
К.Ю. Поляков, Е.А. Ерёмин, 2013 Программирование на языке Паскаль § 64. Сортировка 1.
Транксрипт:

Таблицы (tables) Таблица - это совокупность записей, каждая из которых состоит из двух полей - ключа и тела: причем ключи обязательно должны быть различными: ключ i ключ j, если i j. ключ 1 тело 1 ключ 2 тело 2 ключ N тело N … N 0 По отношению к таблице применяются следующие операции: 1. Поиск по ключу: дан ключ - найти запись с этим ключом. 2. Вставка новой записи в таблицу. 3. Удаление записи, имеющей данный ключ.

Основная проблема при работе с таблицей – это так организовать таблицу, чтобы поиск по ключу был как можно более быстрым. Соглашения 1) Операция удаления записей из таблиц применяется на практике достаточно редко, поэтому мы не будем рассматривать ее в дальнейшем. 2) Мы будем пользоваться следующим описанием записей таблиц: type запись = record ключ: Тип Ключа; тело: Тип Тела end; Тип запись - это тип элементов таблицы, которые мы представляем паскалевскими записями из двух полей. Ключи могут быть любого типа, лишь бы их можно было сравнивать на равно-неравно и на больше-меньше; как правило, это числа или строки. Тела же записей могут быть любого типа (массивами, строками и т.п.) - все зависит от конкретной задачи. 3) Текущее количество записей в таблице будем обозначать как N: N - число записей в таблице 4) Каждый способ организации таблиц мы будем оценивать по числу сравнений ключей, т.е. по тому количеству записей таблицы, ключи из которых нужно сравнить с заданным ключом, чтобы найти запись с этим ключом или найти место, куда надо вставить новую запись: оценка операций – по числу сравнений ключей

Оптимальный алгоритм поиска а) да нет б) да нет в) N/2 N/2 Упорядоченные таблицы 12 nn+1 L M ключ 1 ключ 2... ключ n... TАБ тело 1 тело 2 тело n Nn

const L=...; {размер массива М} type index = 1..L; таблица = record M: array[index] of запись; N: index end; Алгоритм бинарного поиска (поиск по ключу) function Бинарный Поиск(var TAB: таблица; key: Тип Ключа; var i: integer): boolean; var l, r, c: integer; begin with TAB do begin l:=1; r:=N; {левый и правый концы} while l<r do begin c:=(l+r) div 2; {середина} if key>M[c].ключ then l:=c+1 else r:=c end; Бинарный Поиск:=key=M[l].ключ; i:=l; end {of with} end;

Вставка новой записи M ==> procedure вставка(var TAB: таблица; var rec: запись); var i, j: integer; begin if Бинарный Поиск(TAB,rec.ключ,i) then TAB.M[i]:=rec else with TAB do begin if rec.ключ>M[i].ключ then i:=i+1; {i – место для rec} for j:=N downto i do M[j+1]:=M[j]; {освободить i-е место} M[i]:=rec; N:=N+1 end end;

Методы сортировки ключей таблицы Сортировка простым обменом (метод пузырька). procedure bubblesort (var TAB : таблица); vari,j : index; x : запись; begin for i:=2 to TAB.N do begin for j:= TAB.N downto i do { Шаг сортировки } if TAB.M[j-1].ключ > TAB.M[j].ключ then begin x:=TAB.M[j-1]; TAB.M[j-1]:=TAB.M[j]; TAB.M[j]:=x end end; Шагом сортировки по методу пузырька назовем полный проход по массиву ключей Число сравнений в алгоритме простого обмена C = (n 2 - n)/2, а количество пересылок M min = 0,M ср = (n2 - n)*3/4,M max = (n2 - n)*3/2

Сортировка простым выбором procedure sort (var TAB : таблица); vari,j,k : index; x : запись; begin for i:=1 to TAB.N - 1do begin k:=i; x:=TAB.M[i]; for j:=i+1 to TAB.N do{Очередной шаг сортировки} if TAB.M[j].ключ < x.ключ then begin k:=j; x:=TAB.M[j] end; TAB.M[k]:=TAB.M[i]; TAB.M[i]:=x; end end; Шагом сортировки по методу простого выбора назовем полный проход по отрезку массива ключей при поиске минимального ключа и обмен найденного минимального ключа с первым ключом этого отрезка ключей. Среднее число сравнений равно С=(n 2 - n)/2, а число пересылок: М min =3*(n-1)M max =trunc(n 2 /4) + 3*(n-1)