{Sravnenie vremeni dlya sortirovki massivov treh vidov metodom slivaniya Massivy : Byte, Integer, Real Razmer maksimaljnyj Generator sluchajnyh chisel, no znacheniya dolzhny bytj odinakovye v 3 mssivah Vremya schitatj dlya sozdannogo, uporyadochennogo i dlya naoborot uporyadochennogo massiva Rezuljtaty v vide tablicy Salidzina kartosanas laiku saliesanas metodei Tris tipu mainigo masivi: byte, integer, real Masivu izmeri- maksimalie Sakuma vertibas veido, izmantojot gadijuma skaitlu generatoru Kartosanas veikt izveidotajam, sakartotam un preteja seciba sakartotam masivam Rezultatus izvadit tabulas forma} uses crt,dos; const n=100; type mas1=array[1..n] of byte; mas2=array[1..n] of integer; mas3=array[1..n] of real; var a:mas1; b:mas2; c:mas3; sk:longint; i,j,k,t:longint; shag ,x:longint; lv:boolean; h,min,sec,msec:word; h1,min1,sec1,msec1: word; h2,min2,sec2,msec2: word; procedure merge1(var ar:mas1; n:byte); procedure Slit( k, q: integer); var m: byte; i,j,t: byte;d: mas1; begin m:=k+(q-k) div 2; i:=k; j:=succ(m); t := 1; while (i<=m) and (j<=q) do begin if ar[i]<=ar[j] then begin d[t]:=ar[i]; Inc(i) end else begin d[t]:=ar[j]; Inc(j) end; inc(t) end; while i<=m do begin d[t]:=ar[i]; inc(i); inc(t) end; while j<=q do begin d[t]:=ar[j]; inc(j); inc(t) end; for i:=1 to pred(t) do ar[pred(k+i)]:=d[i] end; procedure sort(i,j:integer); var t: byte; begin if i>=j then exit; if j-i=1 then begin if ar[j]=j then exit; if j-i=1 then begin if ar[j]=j then exit; if j-i=1 then begin if ar[j]=ar[j] then begin d[t]:=ar[i]; Inc(i) end else begin d[t]:=ar[j]; Inc(j) end; inc(t) end; while i<=m do begin d[t]:=ar[i]; inc(i); inc(t) end; while j<=q do begin d[t]:=ar[j]; inc(j); inc(t) end; for i:=1 to pred(t) do ar[pred(k+i)]:=d[i] end; procedure sort(i,j:integer); var t: byte; begin if i<=j then exit; if j-i=1 then begin if ar[j]>ar[i] then begin t:=ar[i]; ar[i]:=ar[j]; ar[j]:=t end end else begin sort(i,i+(j-i) div 2); sort(i+(j-i) div 2+1,j); slit(i, j) end; end; begin sort(1,n); end; procedure merge2dil(var ar:mas2; n:integer); procedure Slit( k, q: integer); var m: integer; i,j,t: integer;d: mas2; begin m:=k+(q-k) div 2; i:=k; j:=succ(m); t := 1; while (i<=m) and (j<=q) do begin if ar[i]>=ar[j] then begin d[t]:=ar[i]; Inc(i) end else begin d[t]:=ar[j]; Inc(j) end; inc(t) end; while i<=m do begin d[t]:=ar[i]; inc(i); inc(t) end; while j<=q do begin d[t]:=ar[j]; inc(j); inc(t) end; for i:=1 to pred(t) do ar[pred(k+i)]:=d[i] end; procedure sort(i,j:integer); var t: integer; begin if i=ar[j] then begin d[t]:=ar[i]; Inc(i) end else begin d[t]:=ar[j]; Inc(j) end; inc(t) end; while i<=m do begin d[t]:=ar[i]; inc(i); inc(t) end; while j<=q do begin d[t]:=ar[j]; inc(j); inc(t) end; for i:=1 to pred(t) do ar[pred(k+i)]:=d[i] end; procedure sort(i,j:longint); var t: real; begin if i<=j then exit; if j-i=1 then begin if ar[j]>ar[i] then begin t:=ar[i]; ar[i]:=ar[j]; ar[j]:=t end end else begin sort(i,i+(j-i) div 2); sort(i+(j-i) div 2+1,j); slit(i, j) end; end; begin sort(1,n); end;} begin clrscr; randomize; for i:=1 to n do 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); merge1(a,n); gettime(h,min,sec,msec); writeln(' Massiv uporyadochennyj v vozrastayuwej posledovateljnosti'); for i:=1 to 80 do write('-'); write('Byte | ' ); write('Vremya | ',h,' st ' ,min,' min ' ,sec,' sec ',msec:2,' msec |'); writeln(' sravneniya | ',sk); h1:=0; min1:=0; sec1:=0; msec1:=0; sk:=0; settime(h1,min1,sec1,msec1); merge2(b,n); gettime(h1,min1,sec1,msec1); write('Integer | ' ); write('Vremya | ',h1,' st ' ,min1,' min ' ,sec1,' sec ',msec1:2,' msec |'); writeln(' sravneniya | ',sk); for i:=1 to 80 do write('-'); writeln; { h2:=0; min2:=0; sec2:=0; msec2:=0; sk:=0; settime(h2,min2,sec2,msec2); merge3dil(a,n); gettime(h2,min2,sec2,msec2); write('Real| ' ); write('Vremya | ',h2,' st ' ,min2,' min ' ,sec2,' sec ',msec2:2,' msec |'); writeln(' sravneniya | ',sk); for i:=1 to 80 do write('-'); writeln;} h:=0; min:=0; sec:=0; msec:=0; sk:=0; settime(h,min,sec,msec); merge1(a,n); gettime(h,min,sec,msec); writeln(' Uporyadochennyj massiv '); for i:=1 to 80 do write('-'); write('Byte | ' ); write('Vremya | ',h,' st ' ,min,' min ' ,sec,' sec ',msec:2,' msec |'); writeln(' sravneniya | ',sk); h1:=0; min1:=0; sec1:=0; msec1:=0; sk:=0; settime(h1,min1,sec1,msec1); merge2(b,n); gettime(h1,min1,sec1,msec1); write('Integer | ' ); write('Vremya | ',h1,' st ' ,min1,' min ' ,sec1,' sec ',msec1:2,' msec |'); writeln(' sravneniya | ',sk); for i:=1 to 80 do write('-'); writeln; h2:=0; min2:=0; sec2:=0; msec2:=0; sk:=0; {settime(h2,min2,sec2,msec2); merge3(c,n); gettime(h2,min2,sec2,msec2); write(' Real | ' ); write('Vremya | ',h2,' st ' ,min2,' min ' ,sec2,' sec ',msec2:2,' msec |'); writeln(' sravneniya | ',sk); for i:=1 to 80 do write('-'); writeln;} h:=0; min:=0; sec:=0; msec:=0; sk:=0; settime(h,min,sec,msec); merge1dil(a,n); gettime(h,min,sec,msec); writeln(' Uporyadochennyj v drugoj posledovateljnosti massiv '); for i:=1 to 80 do write('-'); write('Byte | ' ); write('Vremya | ',h,' st ' ,min,' min ' ,sec,' sec ',msec:2,' msec |'); writeln(' sravneniya | ',sk); h1:=0; min1:=0; sec1:=0; msec1:=0; sk:=0; settime(h1,min1,sec1,msec1); merge2dil(b,n); gettime(h1,min1,sec1,msec1); write('Integer | ' ); write('Vremya | ',h1,' st ' ,min1,' min ' ,sec1,' sec ',msec1:2,' msec |'); writeln(' sravneniya | ',sk); for i:=1 to 80 do write('-'); writeln; h2:=0; min2:=0; sec2:=0; msec2:=0; sk:=0; settime(h2,min2,sec2,msec2); {merge3dil(c,n); gettime(h2,min2,sec2,msec2); write(' Real| ' ); write('Vremya | ',h2,' st ' ,min2,' min ' ,sec2,' sec ',msec2:2,' msec |'); writeln(' sravneniya | ',sk); for i:=1 to 80 do write('-'); writeln;} readkey; end.