- •Списки, понятие однонаправленного списка, двунапрвленного списка, реализация списка, кольцевой сп.
- •Определение структуры данных, отличие динамических и статистических, реализация атд
- •Определение атд, связной структуры данных, структурированного типа данных, массива.
- •Определение данных, информации, групп типов данных
- •Связное представление данных, достоинство, недостатки
- •Основные функции над списками
- •35. Реализация списков с помощью указателей
- •36. Основные функции над списками
- •37. Определение стека, массива, множества, структуры данных
- •38. Понятие методов сортировки массивов, привести методы нескольких сортировок
- •41. Понятие массивов, дескриптора массивов, свободный массив(его достоинства и недостатки)
- •43. Определение дека, множества, очереди с приоритетом, информации
- •43. Определение дека, множества, очереди с приоритетом, информации
- •44. Факторы влияющие на выбор алгоритма сортировки массива
- •47. Стратегии сортировки массивов
- •51. Применение стеков
- •52. Определение данных, структуры данных, список данных, указатели
47. Стратегии сортировки массивов
По-видимому, самым простым методом сортировки является так называемый метод "пузырька". Чтобы уяснить его идею, представьте , что массив (таблица) расположен вертикально. Элементы с большим значением всплывают вверх наподобие больших пузырьков. При первом проходе вдоль массива, начиная проход "снизу", берется первый элемент и поочередно сравнивается с последующими. При этом:
* если встречается более "легкий" (с меньшим значением) элемент, то они меняются местами;
* при встрече с более "тяжелым" элементом, последний становится "эталоном" для сравнения, и все следующие сравниваются с ним .
В результате наибольший элемент оказывается в самом верху массива.
begin for j:=1 to N-1 do for i:=1 to N-j do if M[i] > M[i+1] then swap(M[i],M[i+1]) end;
Второй метод называется метод вставок., т.к. на j-ом этапе мы "вставляем" j-ый элемент M[j] в нужную позицию среди элементов M[1], M[2],. . ., M[j-1], которые уже упорядочены. После этой вставки первые j элементов массива M будут упорядочены. Сказанное можно записать следующим образом:
нц для j от 2 до N переместить M[j] на позицию i <= j такую, что M[j] < M[k] для i<= k < j и либо M[j] >= M[i-1], либо i=1 кц
begin M[0] := -oo; for j:=2 to N do begin i := j; while M[i] < M[i-1] do begin swap(M[i],M[i-1]); i := i-1 end
end end;
Идея сортировки с помощью выбора не сложнее двух предыдущих. На j-ом этапе выбирается элемент наименьший среди M[j],M[j+1],. . ., M[N](см. процедуру FindMin) и меняется местами с элементом M[j]. В результате после j-го этапа все элементы M[j], M[j+1],. . ., M[N]будут упорядочены.
Сказанное можно описать следующим образом:
нц для j от 1 до N-1 выбрать среди M[j],. . ., M[N] наименьший элемент и поменять его местами с M[j] кц
Более точно:
begin for j:=1 to N-1 do begin FindMin(j, i); swap(M[j],M[i]) end end;
48. Операции над стеками
3.1. Организация данных – стек.
1. Создание элемента стека:
2. Добавление элемента в стек:
3. Удаление элемента из стека:
Стек представляет собой организацию данных, из которой первым извлекается тот элемент, который был добавлен в нее последним, т. е. последовательность элементов, включение и исключение элементов из которой производится только с одного конца, – таким образом, доступ к элементам происходит по принципу LIFO (last in first out).
49. Определение связанной структуры данных, структурированного типа данных, массива, полустатических структур, объекты Дерево — одна из наиболее широко распространённых структур данных в информатике, эмулирующая древовидную структуру в виде набора связанных узлов. Является связным графом, не содержащим циклы. Большинство источников также добавляют условие на то, что рёбра графа не должны быть ориентированными. В дополнение к этим трём ограничениям, в некоторых источниках указывается, что рёбра графа не должны быть взвешенными.
Структурированные типы данных определяют наборы однотипных или разнотипных компонент.
Типы компонент образуются из других типов (простых, структурированных, указателей и т. д.)
данных. В языке Паскаль существуют следующие структурированные типы:
- тип-массив;
- тип-запись;
- тип-множество;
- тип-файл.
В Turbo Pascal имеется еще два структурированных типа:
- тип-строка string и
- тип-строка PChar, являющиеся разновидностями массива. Массив (в некоторых языках программирования также таблица, ряд, матрица) — тип или структура данных в виде набора компонентов (элементов массива), расположенных в памяти непосредственно друг за другом. При этом доступ к отдельным элементам массива осуществляется с помощью индексации, то есть через ссылку на массив с указанием номера (индекса) нужного элемента. За счёт этого, в отличие от списка, массив является структурой данных, пригодной для осуществления произвольного доступа к её ячейкам[1].
Полустатические структуры данных характеризуются такими признаками:
1. имеют переменную длину и простые процедуры ее изменения;
2. изменение длины структуры происходит в определенных пределах, не превышая какого-то максимального (предельного) значения.
Если полустатическую структуру рассматривать на логическом уровне, то это последовательность данных, связанная отношениями линейного списка. Доступ к элементу может осуществляться по его порядковому номеру.
Физическое представление полустатических структур данных в памяти - это обычно последовательность слотов в памяти, где каждый следующий элемент расположен в памяти в следующем слоте (т.е. вектор). Физическое представление может иметь, также, вид однонаправленного связного списка (цепочки), где каждый следующий элемент адресуется указателем находящимся в текущем элементе. В последнем случае ограничения на длину структуры гораздо менее строгие.
С ним относятся: Стеки Очереди FIFO Деки Строки.
Объе́кт в программировании — некоторая сущность в компьютерном пространстве, обладающая определённым состоянием и поведением, имеющая заданные значения свойств (атрибутов) и операций над ними (методов).
50. Очереди, физическая структура (машинное представление), понятие кольцевой очереди О́чередь — абстрактный тип данных с дисциплиной доступа к элементам «первый пришёл — первый вышел» (FIFO, First In — First Out). Добавление элемента (принято обозначать словом enqueue — поставить в очередь) возможно лишь в конец очереди, выборка — только из начала очереди (что принято называть словом dequeue — убрать из очереди), при этом выбранный элемент из очереди удаляется.
Физическая структура данных - это способ физического представления данных в памяти компьютера.
При представлении очереди массивом в дополнение к нему необходимы параметры-указатели: на начало очереди (на первый элемент в очереди) и на ее конец (первый свободный элемент в очереди). При включении элемента в очередь элемент записывается по адресу, определяемому указателем на конец, после чего этот указатель увеличивается на единицу. При исключении элемента из очереди выбирается элемент, адресуемый указателем на начало, после чего этот указатель также увеличивается на единицу (рис. 13.1). Очевидно, что со временем указатель на конец при очередном включении элемента достигнет верхней границы той области памяти, которая выделена для очереди. Однако если операции включения чередовались с операциями исключения элементов, то в начальной части отведенной под очередь памяти имеется свободное место. Для того чтобы места,
занимаемые исключенными элементами, могли быть повторно использованы, очередь замыкается в кольцо: указатели (на начало и на конец), достигнув конца выделенной области памяти, переключаются на ее начало. Такая организация очереди в памяти называется кольцевой очередью.
