Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
К1_Допматериалы(02дек12).doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
3.2 Mб
Скачать

Формулы бэкуса-наура

  • См.

  1. http://uni-vologda.ac.ru/cs/syntax

  2. Перминов о.Н. Программирование на языке Паскаль

  3. Ставорский A. Turbo Pascal 7.0

Синтаксические диаграммы

  • ПРИМЕР. ОПИСАНИЕ ФОРМАТА ЧИСЛОВЫХ ЗНАЧЕНИЙ

Целые

Вещественные

1234

+5

-4321

-633

Шестнадцатеричная форма

$9

$FF

$FFFF

  • Недопустимый формат

1E+2

123.0

С фиксированной точкой

123.4

.09

-66.777

Экспоненциальный формат

1.2E+2

-1.4e-19

5E4

0.134E+31

  • ТЕМА. МАССИВЫ. АЛГОРИТМЫ СОРТИРОВКИ

Алгоритмы сортировки

Требования к алгоритмам сортировки одномерных массивов:

  1. Экономичность по использованию доступной памяти: сортировка происходит в исходном массиве (без вспомогательного).

  2. Экономичность по времени работы алгоритмов. Меры эффективности: a) число сравнений элементов (~ключей); b) число перестановок элементов. Эти меры являются функцями от числа сортируемых элементов (n). Для различных алгоритмов сортировки требуется от n2 (прямые алгоритмы) до n*log(n) сравнений элементов.

Несмотря на существенную разницу в оценках эффективности алгоритмов, программы, реализующие прямые методы, коротки и легко понимаемы, сами алгоритмы удобны для понимания характерных черт большинства сортировок. В усложненных методах выполняется большее число операций, поэтому для малых n прямые методы будут работать быстрее.

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

  • сортировки с помощью включения;

  • сортировки с помощью выбора;

  • сортировки с помощью обмена.

  • Более подробно см. 681.3 В52 Вирт Н. Алгоритмы и структуры данных

Сортировка с помощью прямого включения

Такой метод сортировки используется при игре в карты. Элементы массива делятся на "готовую" последовательность a1..ai-1 и исходную последовательность a1..an. При каждом шаге, начиная с i=2 и увеличивая i каждый раз на единицу, из исходной последовательности извлекается i-й элемент (x) и перекладывается в готовую последовательность в соответствующую позицию.

Процесс перестановки i-го элемента может закончиться, если:

  1. найден элемент aj с ключом, меньшим, чем ключ х.

  2. достигнут левый конец готовой последовательности.

  • СОРТИРОВКА МАССИВА ПО ВОЗРАСТАНИЮ (вариант с дополнительным элементом-барьером)

Вариант исключает условие 2 из вложенного цикла. В начало массива добавляется элемент- барьер (sentinel) a0 со значением х. Для этого диапазон индекса в описании переменной a расширяется до 0..n).

PROCEDURE StraightInsertion;

VAR

i, j: integer;

x: integer;

BEGIN

FOR i:=2 TO n DO

x := a[i];

a[0]:= x; // дополнительный элемент-барьер

j:=i;

WHILE x<a[j-1] DO BEGIN

a[j]:=a[j-1];

j:=j-1

END;

a[j]:=x

END

END;

  • См. также 681.3 В52 Вирт Н. Алгоритмы и структуры данных. Сортировка Шелла.