Лабораторная 9. Сортировки

  1. Используя лекционный материал, разработать 4 процедуры сортировок (пузырьковой, вставками, выбором, быстрой), с возможностью сортировать динамические массивы с ключами, определяемыми пользователями.
    type TSortedArray=array of pointer;
    // Сортируемый в дальнейшем динамический массив указателей. 
    // Переменные данного типа заполняются пользователем произвольными структурами 
    // (указателями на записи, числа, объекты и т.п.).
    
    type TCompareFunc=function(p1,p2:pointer):integer;
    // Пользовательская функция сравнения. Принимает два элемента массива, возвращает 0, если ключи элементов равны,
    // отрицательное значение, если ключ первого элемента меньше второго и положительное значение в противном случае.
    
    // В процедуру сортировки передается два параметра - сортируемый динамический массив A
    // (параметр-значение, т.к. фактически является указателем) и пользовательская функция сравнения Compare, 
    // которая вызывается из сортировки каждый раз, когда необходимо сравнить два значения массива.
    
    procedure SortBubble(A:TSortedArray; Compare:TCompareFunc);
    begin
    // код пузырьковой сортировки
    end;
    
    procedure SortInsert(A:TSortedArray; Compare:TCompareFunc);
    begin
    // код сортировки вставками
    end;
    
    procedure SortChoice(A:TSortedArray; Compare:TCompareFunc);
    begin
    // код сортировки выбором
    end;
    
    procedure SortSpeed(A:TSortedArray; Compare:TCompareFunc);
    begin
    // код быстрой сортировки 
    end;
    
  2. Разработать программу проверки корректности работы всех сортировок.
  3. Сравнить скорость работы сортировок на идентичных массивах большого объема, заполненных случайным образом. Сделать выводы об эффективности алгоритмов.
  4. Оценить увеличение времени работы сортировок при N-кратном увеличении размера сортируемых массивов. Сделать выводы о (не)соответствии полученных результатов известной вычислительной сложности алгоритмов сортировок.
  5. Выполнить два предыдущих пункта для массивов, 1) отсортированных, 2) отсортированных в обратном порядке. Сделать соответствующие выводы.