{$R-,S-} PROGRAM Porzadkowanie_Liczb_Rosnaco_Malejaco; USES Crt; TYPE Tab = ARRAY[1..2598] OF Integer; VAR a : Tab; n, i : Word; Zn : Char; PROCEDURE Losuj(Var x : Tab; l : Word); Begin For i:=1 To l Do x[i]:=Random(100); End; PROCEDURE Wypisz(x : Tab; l : Word; t : String); Begin WriteLn; WriteLn(t); For i:=1 To l Do Write(x[i]:0, ' '); WriteLn; End; PROCEDURE QuickSort(Var A: Tab; Lo, Hi: Integer); { Sortowanie QuickSort } Procedure Sort(l, r: Integer); Var i, j, x, y: Integer; Begin i:=l; j:=r; x:=a[(l+r)DIV2]; Repeat While a[i] < x Do i:=i+1; While x < a[j] Do j:=j-1; If i <= j Then Begin y:=a[i]; a[i]:=a[j]; a[j]:=y; i:=i+1; j:=j-1; End; Until i > j; If l < j Then Sort(l, j); If i < r Then Sort(i, r); End; Begin; { QuickSort } Sort(Lo,Hi); End; PROCEDURE Sort_Mal(Var x : Tab; l : Word); { Sortowanie bħbelkowe } Var P : Boolean; B : Integer; Begin Repeat P:=True; For i:=l DownTo 2 Do If x[i] > x[i-1] Then Begin B:=x[i]; x[i]:=x[i-1]; x[i-1]:=B; P:=False; End; Until P=True; End; BEGIN ClrScr; WriteLn(' PROGRAM : '); WriteLn(' Porzadkowanie Liczb. '); WriteLn; Write('Podaj ile liczb losowac : '); ReadLn(n); Randomize; Losuj(a, n); Wypisz(a, n, 'Wylosowane liczby :'); QuickSort(a, 1, n); Wypisz(a, n, 'Liczby uporzadkowane rosnaco :'); Sort_Mal(a, n); Wypisz(a, n, 'Liczby uporzadkowane malejaco :'); Zn:=ReadKey; END.