program bublinky; const max = 32000; type tpole = array [ 1..max ] of integer; procedure bublej( var p: tpole; velikost: integer ); var zmena: boolean; odklad: integer; i: integer; begin repeat zmena := false; for i := 1 to velikost - 1 do begin if p[ i ] > p[ i + 1 ] then begin odklad := p[ i ]; p[ i ] := p[ i + 1 ]; p[ i + 1 ] := odklad; zmena := true; end; end; until not zmena; end; procedure quick( var po: tpole; levy, pravy: integer ); var l, p: integer; odk, pivot: integer; begin if levy + 1 >= pravy then exit; pivot := po[ ( levy + pravy ) div 2 ]; l := levy; p := pravy; while l < p do begin if po[ l ] < pivot then inc( l ) else if po[ p ] >= pivot then dec( p ) else begin odk := po[ l ]; po[ l ] := po[ p ]; po[ p ] := odk; inc( l ); dec( p ); end; end; quick( po, levy, l - 1 ); quick( po, p + 1, pravy ); end; procedure nahodne_napln( var p: tpole; velikost: integer ); var i: integer; begin for i := 1 to velikost do p[ i ] := random( 1000 ); end; procedure vypis( var p: tpole; velikost: integer ); var i: integer; begin for i := 1 to velikost do write( p[ i ], ' ' ); writeln; end; var p: tpole; begin nahodne_napln( p, max ); vypis( p, max ); bublej( p, max ); vypis( p, max ); end.