- •Оглавление
- •Введение
- •Методические указания
- •Темы курсовых проектов
- •Пример выполнения курсового проекта
- •1 Постановка задачи
- •2 Краткая теория
- •2.1 Сортировка методом прямого включения
- •2.2 Сортировка методом прямого выбора
- •2.3 Сортировка с помощью прямого обмена (пузырьковая)
- •3 Метод исследования
- •4 Результаты исследования
- •5 Контрольный пример
- •6 Заключение
- •7 Приложение Описание процедур, используемых в программе
- •Текст программы( на языке программирования Pascal)
- •I:integer;
- •I:integer;
- •I,j:integer;
- •X:integer;
- •I,j:integer;
- •X:integer;
- •I,j:integer;
- •X:integer;
- •I,j:integer;
- •Item:byte;
- •{Fill - процедура, заполняющая заданную область экрана заданными символами заданного цвета}
- •1:Example;
- •2:Begin
- •{Вызов процедуры make, осуществляющей исследование методов сортировки}
- •{Вызов процедуры make, осуществляющей исследование методов сортировки}
- •{Вызов процедуры make, осуществляющей исследование методов сортировки}
- •3:Begin
- •4:Begin
- •5:Begin
- •6:Begin
- •Gotoxy(12,7);write('Данная программа является курсовым проектом по дисциплине');
- •Список литературы
Пример выполнения курсового проекта
1 Постановка задачи
Осуществить исследование прямых методов сортировки:
- метод прямого выбора;
- метод прямой вставки;
- метод прямого обмена.
Исследование осуществить, используя массивы упорядоченных и неупорядоченных чисел по 10,100,1000 и 10000 элементов.
2 Краткая теория
При обработке данных важно знать и информационное поле данных, и размещение их в машине.
Различают внутреннюю и внешнюю сортировки:
- внутренняя сортировка - сортировка в оперативной памяти;
- внешняя сортировка - сортировка во внешней памяти.
Сортировка - это расположение данных в памяти в регулярном виде по их ключам. Регулярность рассматривают как возрастание (убывание) значения ключа от начала к концу в массиве.
Если сортируемые записи занимают большой объем памяти, то их перемещение требует больших затрат. Для того, чтобы их уменьшить, сортировку производят в таблице адресов ключей, делают перестановку указателей, т.е. сам массив не перемещается. Это метод сортировки таблицы адресов.
При сортировке могут встретиться одинаковые ключи. В этом случае при сортировке желательно расположить после сортировки одинаковые ключи в том же порядке, что и в исходном файле. Это устойчивая сортировка.
Эффективность сортировки можно рассматривать с нескольких критериев:
- время, затрачиваемое на сортировку;
- объем оперативной памяти, требуемой для сортировки;
- время, затраченное программистом на написание программы.
Выделяем первый критерий. Можно подсчитать количество сравнений при выполнении сортировки или количество перемещений.
Пусть Н = 0,01n2 + 10n - число сравнений. Если n < 1000, то второе слагаемое больше, если n > 1000, то больше первое слагаемое.
Т. е. при малых n порядок сравнения будет равен n2, при больших n порядок сравнения - n.
Порядок сравнения при сортировке лежит в пределах
от 0 (n log n) до 0 (n2); 0 (n) - идеальный случай.
Различают следующие методы сортировки:
- базовые методы;
- улучшенные методы.
Базовые методы:
1) метод прямого включения;
2) метод прямого выбора;
3) метод прямого обмена.
Количество перемещений в этих трех методах примерно одинаково.
2.1 Сортировка методом прямого включения
Неформальный алгоритм
for i = 2 to n
x = a(i)
находим место среди а(1)…а(i) для включения х
next i
Программа на Паскале:
for i := 2 to n do begin x := a[i]; a[0] = x; for j := i - 1 downto 1 do if x < a[j] then a[j + 1] := a[j] else a[j + 1] := x; end;
|
Эффективность алгоритма:
Количество сравнений в худшем случае будет равно (n - 1)(n - 1).
2.2 Сортировка методом прямого выбора
Рассматриваем весь ряд массива и выбираем элемент, меньший или больший элемента а(i), определяем его место в массиве - k, и затем меняем местами элемент а(i) и элемент а(k).
Программа на Паскале:
for i := 1 to n - 1 do begin x := a[i]; k := i; for j := i + 1 to n do if x > a[j] then begin k := j; x := a[k]; end; a[k] := a[i]; a[i] := x; end; |
Эффективность алгоритма:
Число сравнений М = .
Число перемещений Cmin = 3(n - 1), Cmax = 3(n - 1) (порядок n2).
В худшем случае сортировка прямым выбором дает порядок n2, как и для числа сравнений, так и для числа перемещений.
