Сортировка Выбором - Исследование по сравнению алгоритмов сортировки по трудоемкости. Трудоёмкость считать суммой операций арифметики, сравнения и присвоения за всю работу алгоритма сортировки Сравнивать трудоёмкости для лучшего, худшего и случайного сл
Описание
Цель работы:
/ задача из РК программа в 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.Процедура Swap: •Производит обмен значениями двух переменных. В данном случае, используется для обмена элементов массива во время сортировки. 3.Основная часть программы: •N := 0;: Обнуление переменной, которая будет содержать количество чисел в массиве.
•Запрос пользователя для ввода количества чисел в массиве (N). •Заполнение массива числами, введенными пользователем. •Вывод исходного массива. 4.Сортировка выбором (по возрастанию): •Двойной цикл for, который проходит по всем элементам массива и сравнивает их. •Если текущий элемент больше следующего, то они меняются местами. •Ведется подсчет числа операций (Count), представляющих трудоемкость алгоритма. 5.Вывод отсортированного массива и трудоемкости для текущего случая. 6.Трудоемкость для \"худшего\" случая: •Обнуление счетчика для худшего случая (CountMax). •Повторная сортировка массива для \"худшего\" случая (по убыванию). •Вывод отсортированного массива и трудоемкости для \"худшего\" случая.
Примечание: Сортировка выбором - это простой алгоритм сортировки, который последовательно выбирает минимальный (или максимальный) элемент из неотсортированной части массива и перемещает его в начало (или конец) этой части. Процесс повторяется до тех пор, пока весь массив не станет отсортированным. Вот пошаговое описание работы сортировки выбором: 1.Исходный массив: •Представьте, что у вас есть массив чисел, изначально не отсортированный. 2.Итерация по массиву: •Проход по массиву от начала до конца. •Для каждого элемента находится минимальный (или максимальный) элемент в оставшейся неотсортированной части массива. 3.Обмен элементов: •Минимальный (или максимальный) элемент обменивается с текущим элементом, стоящим в начале неотсортированной части.
•Таким образом, начало массива становится отсортированной частью. 4.Переход к следующей итерации: •Индекс начала неотсортированной части увеличивается на 1, и процесс повторяется. 5.Повторение: •Шаги 2-4 повторяются, пока вся последовательность не станет отсортированной. Временная сложность сортировки выбором в худшем, среднем и лучшем случаях составляет O(n^2), где n - количество элементов в массиве. Это делает сортировку выбором неэффективной для больших массивов, но она может быть простой в реализации и может быть полезной для небольших наборов данных или в том случае, если заменяемость элементов занимает значительное количество времени по сравнению с сравнением элементов.
Код программы: program project1; var Numbers: array[0..999] of Integer; i, j, temp, Count, CountMax, N: Integer; procedure Swap(var a, b: Integer); var temp: Integer; begin temp := a; a := b; b := temp; end; begin N := 0; // Обнуляем значение количества чисел в массиве // Запрашиваем у пользователя количество чисел в массиве writeln(\'Analiz trudoemkosti algoritma sortirovki Vybora\'); 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 := 0 to N - 2 do begin for j := i + 1 to N - 1 do begin if Numbers[j] < Numbers then begin Swap(Numbers, Numbers[j]); Inc(Count); // Увеличиваем счетчик на 1 end; end; 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 := 0 to N - 2 do begin for j := i + 1 to N - 1 do begin if Numbers[j] > Numbers then begin Swap(Numbers, Numbers[j]); Inc(CountMax); // Увеличиваем счетчик на 1 end; end; 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.
.
Характеристики лабораторной работы
Преподаватели
Список файлов
