
- •1. Условный оператор, оператор выбора
- •5. Метод пошаговой детализации (последовательного уточнения) разработки алгоритмов.
- •2. Операторы организации циклов
- •3. Обработка двумерных массивов.
- •4. Процедуры и функции
- •37. Алгоритмы генерирования k-элементных подмножеств множества
- •6. Использование множеств для решения задач
- •7. Процедуры и функции обработки строк
- •8. Сортировка и поиск информации. Методы внутренней сортировки: Сортировка «пузырек»
- •9.Сортировка подсчетом.
- •10.Сортировка простым обменом
- •11. Методы внутренней сортировки: «Шейкер-сортировка»
- •12. Методы внутренней сортировки: Сортировка «Хаора»
- •14. Методы внутренней сортировки: Пирамидальная сортировка
- •16.Сортировка бинарными вставками
- •17. Методы внутренней сортировки: Сортировка «Шелла»
- •15 Сортировка простыми вставками.
- •19.Чтение типизированных файлов
- •18. Сортировка слиянием
- •20.Алгоритмы удаления записей типизированного файла.
- •19.Сортировка естественным слиянием.
- •28. Динамическая структура очередь, ее создание и использование.
- •20. Поразрядная сортировка
- •32. Деревья: построение бинарного дерева
- •52.Чтение типизированных файлов
- •21. Рекуррентные выражения. Рекурсия: прямая и косвенная.
- •22.Стандартные процедуры и функции Unit Graph.
- •53.Алгоритмы удаления записей типизированного файла.
- •27. Динамическая структура стек, ее создание и использование.
- •34. Алгоритмы генерирования перестановок (антилексикографическом порядке )
- •29. Списки: односвязные
- •33. Алгоритм генерирования перестановок в лексикографическом порядке.
- •30.Списки: двухсвязные
- •31. Динамическая структура кольцо, ее создание и использование.
- •34. Алгоритмы генерирования перестановок
- •51. Создание типизированных файлов.
- •36. Алгоритмы генерирования множества всех подмножеств
- •65. Создание таблиц базы данных с помощью Database Desktop.
- •38. Введение в теорию графов. Способы представления ориентированных и неориентированных графов: матрицы смежности
- •39. Поиск в ширину в графе
- •40. Поиск в глубину в графе
- •41,42. Построение остовного дерева графа.
- •43. Поиск кратчайшего пути в графе (Алгоритм Дейкстры)
- •44.Алгоритм Форда поиска кратчайших расстояний в графе.
- •45.Алгоритм Флойда поиска кратчайших расстояний в графе.
- •46. Алгоритмы с возвращением, их реализация с помощью рекурсий и динамических структур. Примеры алгоритмов с возвращением.
- •50.Типизированные файлы, их назначение и использование. Основные процедуры обработки типизированных файлов
- •47,48. Типы файлов, объявление, логическая и физическая организация файловой системы, процедуры и функции обработки файлов
- •67,68 Компоненты страниц Data Access, Data Controls. Создание базы данных, псевдонима бд
- •62 Компоненты страницы Samples, их назначение, свойства, примеры применения
- •56.Полиморфизм. Виртуальные методы. Таблица виртуальных методов
- •54.Понятие объекта.(класса). Инкапсуляция. Иерархия классов (типов). Правила наследования
- •57. Компоненты страницы Standard, их назначение, свойства, примеры применения.
- •49. Нетипизированные файлы
- •58.Компоненты страницы Additional, их назначение, свойства, примеры применения
- •1. TBitBtn
- •2. TSpeedButton
- •3. TMaskEdit
- •4. TDrawGrid
- •60. Компоненты страницы System, их назначение, свойства, примеры применения
- •71. Создание справочной системы
- •61,. Компоненты страницы Dialogs их назначение, свойства, примеры применения
- •63. Задание и изменение свойств компонентов с помощью Инспектора объектов и программно
- •64. Обработка событий, связанных с использованием компонентов.
- •70. Мультимедийные возможности Delphi
- •66. Создание и использование модуля данных Data Module.
- •69. Графические возможности Delphi
15 Сортировка простыми вставками.
На каждом шаге алгоритма, мы выбираем один из элементов входных данных и вставляем его на нужную позицию в уже отсортированном списке, до тех пор пока набор входных данных не будет исчерпан. Выбор очередного элемента, выбираемого из исходного массива — произволен, может использоваться практически любой алгоритм выбора.
program Ins;
var
mass:array [1..100] of real;
i, j, n: integer;
x: real;
begin
read(n);
for i:=1 to n do
read(mass[i]);
for i := 2 to n do
begin
x := mass[i];
j := i-1;
while (j>0) and (x<mass[j]) do
begin
mass[j+1] := mass[j];
j := j-1;
end;
mass[j+1] := x;
end;
for i:=1 to n do
write(mass[i]:8:2);
end.
19.Чтение типизированных файлов
type
TStudent=record
name:string[255];
oz:integer;
end;
var
Student:TStudent;
File:File of TStudent;
begin
AssignFile(F,'test.dat');
Reset(F);
Read(F,Student);
CloseFile(F);
end;
18. Сортировка слиянием
Сортировка слиянием (англ. merge sort) — алгоритм сортировки, который упорядочивает списки (или другие структуры данных, доступ к элементам которых можно получать только последовательно, например — потоки) в определённом порядке. Эта сортировка — хороший пример использования принципа «разделяй и властвуй». Сначала задача разбивается на несколько подзадач меньшего размера. Затем эти задачи решаются с помощью рекурсивного вызова или непосредственно, если их размер достаточно мал. Наконец, их решения комбинируются, и получается решение исходной задачи.
Для решения задачи сортировки эти три этапа выглядят так:
1) Сортируемый массив разбивается на две половины примерно одинакового размера;
2) Каждая из получившихся половин сортируется отдельно, например - тем же самым алгоритмом;
3) Два упорядоченных массива половинного размера соединяются в один.
Рекурсивное разбиение задачи на меньшие происходит до тех пор, пока размер массива не достигнет единицы (любой массив длины 1 можно считать упорядоченным).
Алгоритм был изобретён Джоном фон Нейманом в 1945 году.
procedure MergeSort( var ar1, ar2: array of Integer; min, max: Integer);
var
middle, int1, int2, int3: Integer;
begin
if min<max then begin
middle:=min div 2+max div 2;
MergeSort(ar1, ar2, min, middle);
MergeSort(ar1, ar2, middle+1, max);
int1:=min; //указатель на 1-й массив
int2:=middle+1; //указатель на 2-й массив
int3:=min; //указатель на объединённый массив
while (int1<=middle) and (int2<=max) do begin
if ar1[int1] then begin
ar2[int3]:=ar1[int1];
int1:=int1+1;
end
else begin
ar2[int3]:=ar1[int2];
int2:=int2+1;
end;
inc(int3);
end;
// очистка не пустого списка
while (int1<=middle) do begin
ar2[int3]:=ar1[int1];
int1:=int1+1;
int3:=int3+1;
end;
while (int2<=middle) do begin
ar2[int3]:=ar1[int2];
int2:=int2+1;
int3:=int3+1;
end;
end;
//приравнивание входящих массивов
for int1:=min to max do
ar1[int1]:=ar2[int1];
end;