Лабораторная 5. Сортировка массивов

  1. На основе лекционных примеров разработать универсальные процедуры сортировки динамических массивов.
    type
     TestSortFunction=function(element1,element2:pointer):integer;
        // SortFunction возвращает 
        // 0 - если элементы равны друг другу
        // отрицательное число - если element1 меньше element2, 
        // положительное число - если elemen1 больше element2
     TDataArray=array of pointer;
    
    procedure SortBubble(var data:TDataArray; testfunc:TestSortFunction);
    begin 
     // пузырьковая сортировка 
    end;
    
    procedure SortChoice(var data:TDataArray; testfunc:TestSortFunction);
    begin 
     // сортировка выбором
    end;
    
    procedure SortInsert(var data:TDataArray; testfunc:TestSortFunction);
    begin 
     // сортировка вставками
    end;
    
    procedure SortSpeed(var data:TDataArray; testfunc:TestSortFunction);
    begin 
     // быстрая сортировка
    end;
    
  2. Проверить работу сортировок, используя массив указателей на целочисленные значения. Пример заполнения, вывода массива на экран, уничтожения массива:
    ...
    type PInteger=^integer;
    var a:TDataArray;
        i:integer;
        x:PInteger;
        
    const N=100;
    begin
     setLength(a,100);
    
    // создание элементов массива
     for i:=0 to N-1 do begin
      new(x);
      x^:=random(10);
      a[i]:=x;
     end;
    
    // Вывод до сортировки
     for i:=0 to N-1 do begin
      write(PInteger(a[i])^:4);
     end;
     writeln;
    
     // здесь - сортировка
     ... 
    
    // Вывод после сортировки
     for i:=0 to N-1 do begin
      write(PInteger(a[i])^:4);
     end;
     writeln;
    
    // уничтожение элементов массива
     for i:=0 to N-1 do begin
      dispose(PInteger(a[i]));
     end;
    
    end.