Сортировка Вставкой - Исследование по сравнению алгоритмов сортировки по трудоемкости. Трудоёмкость считать суммой операций арифметики, сравнения и присвоения за всю работу алгоритма сортировки Сравнивать трудоёмкости для лучшего, худшего и случайного сл
Описание
Цель работы:
/ задача из РК программа в Pascal Lazarus.
В архиве также файл с объяснениями работы программы. Тэги: Программа на Lazarus, PascalObject, Pascal, Delphi, Turbo Delphi, Pascal ABC / Анимация, ЛР, РК, ДЗ, 2023
Условия для программы, под которые она выполнена:
Сортировка методом Вставки - Исследование по сравнению алгоритмов сортировки по трудоемкости. Трудоёмкость считать суммой операций арифметики, сравнения и присвоения за всю работу алгоритма сортировки Сравнивать трудоёмкости для лучшего, худшего и случайного случаев. Массивы брать не менее 10 элементов длиной.
Программа в сделанном виде:


Лабораторная работа . Вариант 6. ЛР Исследование по сравнению алгоритмов сортировки по трудоемкости Цель работы: / задача из РК программа в Pascal Lazarus. В архиве также файл с объяснениями работы программы. Тэги: Программа на Lazarus, PascalObject, Pascal, Delphi, Turbo Delphi, Pascal ABC / Анимация, ЛР, РК, ДЗ, 2023 Условия для программы, под которые она выполнена: Сортировка методом Вставки - Исследование по сравнению алгоритмов сортировки по трудоемкости. Трудоёмкость считать суммой операций арифметики, сравнения и присвоения за всю работу алгоритма сортировки Сравнивать трудоёмкости для лучшего, худшего и случайного случаев. Массивы брать не менее 10 элементов длиной.
Программа в сделанном виде: Пошаговое объяснение работы программы: 1.Инициализация переменных: •Numbers: массив для хранения чисел. •i, j: переменные для итерации в циклах. •temp: временная переменная для обмена значениями. •Count, CountMax: счетчики действий (трудоемкости). •N: количество чисел в массиве. 2.Ввод данных: •Пользователь вводит количество чисел N и сами числа. 3.Сортировка вставкой (по возрастанию): •Проход по массиву с 1-го элемента до последнего. •Для каждого элемента Numbers сравниваем его с предыдущими элементами, и если предыдущий элемент больше Numbers, то происходит перестановка. •Подсчитывается трудоемкость Count. 4.Вывод отсортированного массива (по возрастанию) и трудоемкости для текущего случая.
5.Сортировка вставкой для \"худшего\" случая (по убыванию): •Принцип тот же, но меняем условие сравнения, чтобы сортировать по убыванию. •Подсчитывается трудоемкость CountMax. 6.Вывод отсортированного массива (по убыванию) и трудоемкости для \"худшего\" случая. 7.Ожидание ввода пользователя перед завершением программы. Программа в итоге предоставляет информацию об отсортированных массивах (по возрастанию и убыванию) и соответствующей трудоемкости в двух случаях: для текущего массива и для \"худшего\" случая. Примечание: Метод вставки реализован в следующем участке кода: // Реализуем алгоритм сортировки вставкой (по возрастанию) for i := 1 to N - 1 do begin temp := Numbers; j := i - 1; while (j >= 0) and (Numbers[j] > temp) do begin Numbers[j + 1] := Numbers[j]; Inc(Count); // Увеличиваем счетчик на 1 Dec(j); end; Numbers[j + 1] := temp; end; В этом фрагменте кода реализован цикл, в котором происходит проход по массиву Numbers начиная с индекса 1 (первый элемент считается уже отсортированным).
Для каждого элемента Numbers запоминается его значение в переменной temp. Затем запускается цикл while, который сравнивает temp с предыдущими элементами массива (Numbers[j]), сдвигая их вправо, пока не найдется место для вставки temp. При этом увеличивается счетчик Count, отвечающий за трудоемкость. Таким образом, каждая итерация цикла вставляет текущий элемент temp на правильное место в отсортированной части массива, формируя упорядоченную последовательность по возрастанию. Код программы: program project1; var Numbers: array[0..999] of Integer; i, j, temp, Count, CountMax, N: Integer; begin N := 0; // Обнуляем значение кол-ва чисел в массиве // Запрашиваем у пользователя количество чисел в массиве writeln(\'Analiz trudoemkosti algoritma sortirovki Vstavkoi\'); writeln(\'--------------------------------------------------\'); writeln; writeln(\'Vvedite kolichestvo chisel v massive N:\'); write(\'N = \'); readln(N); // Заполняем массив числами, введенными пользователем writeln(\'Vvedite N = \', N, \' chisel dlya zapolnenia massiva:\'); for i := 0 to N - 1 do begin write(\'Chislo \', i + 1, \': \'); readln(Numbers); end; // Выводим исходный массив на экран writeln(\'Ishodnii massiv:\'); for i := 0 to N - 1 do write(Numbers, \' \'); Count := 0; // Обнуляем счетчик действий (Трудоемкость) // Реализуем алгоритм сортировки вставкой (по возрастанию) for i := 1 to N - 1 do begin temp := Numbers; j := i - 1; while (j >= 0) and (Numbers[j] > temp) do begin Numbers[j + 1] := Numbers[j]; Inc(Count); // Увеличиваем счетчик на 1 Dec(j); end; Numbers[j + 1] := temp; end; // Выводим отсортированный массив и трудоемкость для текущего случая writeln; // Пустая строка writeln; // Пустая строка writeln(\'Otsortirovannii massiv po vozrastaniyu:\'); for i := 0 to N - 1 do write(Numbers, \' \'); writeln; writeln(\'Trudoemkost dlya tekuchego sluchaya (kolichestvo deystviy pri sortirovke): \', Count); // Вычисляем трудоемкость для \"худшего\" случая (все числа в обратном порядке) CountMax := 0; // Обнуляем счетчик действий (Трудоемкость для \"худшего\" случая) // Реализуем алгоритм сортировки вставкой для \"худшего\" случая (по убыванию) for i := 1 to N - 1 do begin temp := Numbers; j := i - 1; while (j >= 0) and (Numbers[j] < temp) do begin Numbers[j + 1] := Numbers[j]; Inc(CountMax); // Увеличиваем счетчик на 1 Dec(j); end; Numbers[j + 1] := temp; end; // Выводим отсортированный массив и трудоемкость для \"худшего\" случая writeln; // Пустая строка writeln(\'Otsortirovannii massiv po ubivaniu:\'); for i := 0 to N - 1 do write(Numbers, \' \'); writeln; writeln(\'Trudoemkost pri hudshem sluchae (kolichestvo deystviy pri sortirovke): \', CountMax); readln; end..
Характеристики лабораторной работы
Преподаватели
Список файлов
