program salidzinat; uses crt,dos; const n=900; type mas=array[1..n] of byte; mas1=array[1..n] of integer; mas2=array[1..n] of real; var a:mas; b:mas1; c:mas2; sk:longint; i,j,k,t:longint; solis ,x:longint; lv:boolean; h,min,sec,msec:word; h1,min1,sec1,msec1:word; h2,min2,sec2,msec2:word; procedure mainita( var t,u:byte); {mainisana byte tips} var c:integer; begin c:=t; t:=u; u:=c; end; procedure mainitb( var t,u:integer); {mainisana integer tips} var c:integer; begin c:=t; t:=u; u:=c; end; procedure mainitc( var t,u:real); {mainisana real tips} var c:real; begin c:=t; t:=u; u:=c; end; Procedure Sorta(sv,bv:integer); {hoara metode augosa seciba 1mas.} Var i,j:integer; Begin if sv>=bv then exit; i:=sv; j:=bv; solis:=-1; lv:=false; repeat if lv=(a[i]>=a[j]) then begin inc(sk); mainitb(i,j); mainita(a[i],a[j]); solis:=-solis; lv:=not lv; end else begin inc(sk); end; j:=j+solis; until i=j; sorta(sv,i-1); sorta(i+1,bv); end; Procedure Sortb(sv,bv:integer); {hoara metode augosa seciba 2mas.} Var i,j:integer; w,x:integer; Begin if sv>=bv then exit; i:=sv; j:=bv; solis:=-1; lv:=false; repeat if lv=(b[i]>=b[j]) then begin inc(sk); mainitb(i,j); mainitb(b[i],b[j]); solis:=-solis; lv:=not lv; end else begin inc(sk); end; j:=j+solis; until i=j; sortb(sv,i-1); sortb(i+1,bv); end; Procedure Sortc(sv,bv:real); {hoara metode augosa seciba 3mas.} Var i,j:integer; Begin if sv>=bv then exit; i:=round(sv); j:=round(bv); solis:=-1; lv:=false; repeat if lv=(c[i]>=c[j]) then begin inc(sk); mainitb(i,j); mainitc(c[i],c[j]); solis:=-solis; lv:=not lv; end else begin inc(sk); end; j:=j+solis; until i=j; sortc(sv,i-1); sortc(i+1,bv); end; Procedure Sortadil(sv,bv:integer); {hoara metode dilstosa seciba 1mas.} Var i,j:integer; Begin if sv>=bv then exit; i:=sv; j:=bv; solis:=-1; lv:=false; repeat if lv=(a[i]<=a[j])then begin inc(sk); mainitb(i,j); mainita(a[i],a[j]); solis:=-solis; lv:= not lv; end else begin inc(sk); end; j:=j+solis; until i=j; sortadil(i+1,bv); sortadil(sv,i-1); end; Procedure Sortbdil(sv,bv:integer); {hoara metode dilstosa seciba 1mas.} Var i,j:integer; w,x:integer; Begin if sv>=bv then exit; i:=sv; j:=bv; solis:=-1; lv:=false; repeat if lv=(b[i]<=b[j]) then begin inc(sk); mainitb(i,j); mainitb(b[i],b[j]); solis:=-solis; lv:=not lv; end else begin inc(sk); end; j:=j+solis; until i=j; sortbdil(i+1,bv); sortbdil(sv,i-1); end; Procedure Sortcdil(sv,bv:real); {hoara metode dilstosasa seciba 1mas.} Var i,j:integer; Begin if sv>=bv then exit; i:=round(sv); j:=round(bv); solis:=-1; lv:=false; repeat if lv=(c[i]<=c[j]) then begin inc(sk); mainitb(i,j); mainitc(c[i],c[j]); solis:=-solis; lv:=not lv; end else begin inc(sk); end; j:=j+solis; until i=j; sortcdil(sv,i-1); sortcdil(i+1,bv); end; begin clrscr; randomize; {pieskiram gadijuma skaitlus visam masivam} for i:=1 to n do {skaitli intervala 0..256 jo mums ir masivs tipa byte} begin a[i]:=random(256); b[i]:=a[i]; c[i]:=a[i]; end; h:=0; min:=0; sec:=0; msec:=0; sk:=0; settime(h,min,sec,msec); {uzdodam laiku} sorta(1,n); gettime(h,min,sec,msec); {fiksejam kartosanas laiku} writeln(' sakartojam visus 3 masivus augosa seciba'); for i:=1 to 80 do write('-'); writeln; write('masivam BYTE| ' ); write('laiks ir| ',h,' st ' ,min,' min ' ,sec,' sec ',msec:2,' msec |'); writeln(' main. skaits ir | ',sk); for i:=1 to 80 do write('-'); writeln; h1:=0; min1:=0; sec1:=0; msec1:=0; sk:=0; settime(h1,min1,sec1,msec1); sortb(1,n); gettime(h1,min1,sec1,msec1); write('masivam INTEGER| ' ); write('laiks ir| ',h1,' st ' ,min1,' min ' ,sec1,' sec ',msec1:2,' msec |'); writeln(' main. skaits ir | ',sk); for i:=1 to 80 do write('-'); writeln; h2:=0; min2:=0; sec2:=0; msec2:=0; sk:=0; settime(h2,min2,sec2,msec2); sortc(1,n); gettime(h2,min2,sec2,msec2); write('masivam REAL| ' ); write('laiks ir| ',h2,' st ' ,min2,' min ' ,sec2,' sec ',msec2:2,' msec |'); writeln(' main. skaits ir | ',sk); for i:=1 to 80 do write('-'); writeln; h:=0; min:=0; sec:=0; msec:=0; sk:=0; settime(h,min,sec,msec); sorta(1,n); gettime(h,min,sec,msec); writeln(' veican kartosanu sakartotam masivam'); for i:=1 to 80 do write('-'); writeln; write('augoss BYTE| ' ); write('laiks ir| ',h,' st ' ,min,' min ' ,sec,' sec ',msec:2,' msec |'); writeln(' main. skaits ir | ',sk); for i:=1 to 80 do write('-'); writeln; h1:=0; min1:=0; sec1:=0; msec1:=0; sk:=0; settime(h1,min1,sec1,msec1); sortb(1,n); gettime(h1,min1,sec1,msec1); write('augoss INTEGER| ' ); write('laiks ir| ',h1,' st ' ,min1,' min ' ,sec1,' sec ',msec1:2,' msec |'); writeln(' main. skaits ir | ',sk); for i:=1 to 80 do write('-'); writeln; h2:=0; min2:=0; sec2:=0; msec2:=0; sk:=0; settime(h2,min2,sec2,msec2); sortc(1,n); gettime(h2,min2,sec2,msec2); write('augoss REAL| ' ); write('laiks ir| ',h2,' st ' ,min2,' min ' ,sec2,' sec ',msec2:2,' msec |'); writeln(' main. skaits ir | ',sk); for i:=1 to 80 do write('-'); writeln; h:=0; min:=0; sec:=0; msec:=0; sk:=0; settime(h,min,sec,msec); sortadil(1,n); gettime(h,min,sec,msec); writeln(' veicam kartosanu preteja seciba sakartotam masivam'); for i:=1 to 80 do write('-'); writeln; write('dilst. BYTE| ' ); write('laiks ir| ',h,' st ' ,min,' min ' ,sec,' sec ',msec:2,' msec |'); writeln(' main. skaits ir | ',sk); for i:=1 to 80 do write('-'); writeln; h1:=0; min1:=0; sec1:=0; msec1:=0; sk:=0; settime(h1,min1,sec1,msec1); sortbdil(1,n); gettime(h1,min1,sec1,msec1); write('dilst. INTEGER| ' ); write('laiks ir| ',h1,' st ' ,min1,' min ' ,sec1,' sec ',msec1:2,' msec |'); writeln(' main. skaits ir | ',sk); for i:=1 to 80 do write('-'); writeln; h2:=0; min2:=0; sec2:=0; msec2:=0; sk:=0; settime(h2,min2,sec2,msec2); sortcdil(1,n); gettime(h2,min2,sec2,msec2); write('dilst. REAL| ' ); write('laiks ir| ',h2,' st ' ,min2,' min ' ,sec2,' sec ',msec2:2,' msec |'); writeln(' main. skaits ir | ',sk); for i:=1 to 80 do write('-'); writeln; readkey; end.