Пузырьковую я еще в школе писал, с Флойдом разобрался вроде. Взял, вот алгоритм «вставками» с вашего фака:
Program sortirovka;
uses crt;
var
a:array[1..1000] of integer;
n,i,j,t,m,k,copy:integer;
change:boolean;
procedure Insert;{tested}
begin
for i:=1 to n do
begin
t:=a[i];
j:=pred(i);
While (t<a[j])and(j>=0) do
begin
a[succ(j)]:=a[j];
dec(j);
end;
a[succ(j)]:=t;
end;
end;{Insert}
begin
ClrScr;
Writeln('Введите размер массива');
Readln(n);
Writeln('Введите элементы массива');
For i:=1 to n do Read(a[i]);
Writeln('Неотсортированный массив');
For i:=1 to n do write(a[i],' ');
Writeln;
Insert;
Writeln('Отсортированный массив');
For i:=1 to n do write(a[i],' ');
Writeln;
Readkey;
end.
В итоге, при вводе, к примеру, чисел
1,5,2,7,4,5
выдает следующий результат:
2,4,5,5,7,69
И так всегда - наименьшее число заменяется на 69

Еще задачка:
Из неупорядоченного числового массива А(m) получить упорядоченный по возрастанию массив D(n) (n<=m) следующим образом. Выбрать в А наименьший элемент и поместить его в D, затем наименьший из оставшихся и т.д. повторяющиеся эл-ты включать единожды, массив А сохранить. Сделать надо так, чтобы в решении можно было использовать любую из трех процедур.
Вроде бы ничего сложного, а я вот не соображу…

Заранее спасибо.