| Код | const CSize = 16;
type TArray = array [1..CSize] of string; {------------------------------------------------} procedure Fill(var arr: TArray; size: word; wordlen: byte); const CAlphabet : string = 'abcdefghijklmnopqrstuvwxyz'; var len: byte; i: word; j: byte; begin randomize;
len:= length(CAlphabet); for i:= 1 to size do for j:= 1 to wordlen do arr[i]:= arr[i] + CAlphabet[random(len) + 1]; end; {------------------------------------------------} procedure Print(arr: TArray; size: word); var i: word; begin for i:= 1 to size do writeln(i:2, '. ', arr[i]); end; {------------------------------------------------} procedure Sort(var arr: TArray; size: word); var i, j, m, left, right: word; buff: string; begin for i:= 2 to size do if arr[i-1] > arr[i] then begin buff:= arr[i]; left:= 1; right:= i - 1;
repeat m:= (left + right) div 2; if arr[m] < buff then left:= m + 1 else right:= m - 1; until left > right;
for j:= i-1 downto left do arr[j+1]:= arr[j]; arr[left]:= buff; end; end; {------------------------------------------------} var arr: TArray; begin Fill(arr, CSize, 10); Print(arr, CSize); Sort(arr, CSize); writeln; Print(arr, CSize); end.
|
Бинарник с исходником ниже |