niepok

insertsort

Jan 25th, 2015
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.63 KB | None | 0 0
  1. program insertsort;
  2. uses crt, DOS;
  3. const N=100000;
  4. type
  5.     tab1 = array [1..N] of integer;
  6. var
  7.    t1,t2: tab1;
  8.    hour,minute,second,sec100,hour1,minute1,second1,sec1001 : Word;
  9. procedure Fill();
  10.           var
  11.              i : integer;
  12.           begin
  13.                randomize;
  14.                for i:=1 to N do t1[i]:=random(100000);
  15.           end;
  16. procedure Copy();
  17.           var
  18.              i : integer;
  19.           begin
  20.                for i:=1 to N do
  21.                    begin
  22.                         t2[i]:=t1[i];
  23.                    end;
  24.           end;
  25. procedure Print(t1 : tab1);
  26.           var
  27.              i : integer;
  28.           begin
  29.                for i:=1 to N do write(t1[i]:3,'|');
  30.                writeln;
  31.           end;
  32. procedure Czas();
  33.           begin
  34.                write('Czas wykonania sortowania: ');
  35.                write(sec1001+second1*100+minute1*6000+hour*360000-hour*360000-minute*6000-second*100-sec100);
  36.                writeln(' setnych sekundy');
  37.           end;
  38. procedure Sort();        //sortowanie przez wstawienie
  39.           var
  40.              j,x,i : integer;
  41.           begin
  42.                gettime(hour,minute,second,sec100);
  43.                for j:=N-1 downto 1 do
  44.                    begin
  45.                         x:=t1[j];
  46.                         i:=j+1;
  47.                         while (i<=N) and (x>t1[i]) do
  48.                               begin
  49.                                    t1[i-1]:=t1[i];
  50.                                    inc(i);
  51.                               end;
  52.                         t1[i-1]:=x;
  53.                         //Print(t1);
  54.                    end;
  55.                gettime(hour1,minute1,second1,sec1001);
  56.                Czas();
  57.           end;
  58. procedure Sort_2();   //sortowanie przez wstawienie polowkowe
  59.           var
  60.              j,x,i,ip,ik : integer;
  61.           begin
  62.                gettime(hour,minute,second,sec100);
  63.                for j:=N-1 downto 1 do
  64.                    begin
  65.                         x:=t2[j];
  66.                         ip:=j;
  67.                         ik:=N+1;
  68.                         while ik-ip>1 do
  69.                               begin
  70.                                    i:=(ip+ik) div 2;
  71.                                    if x<=t2[i] then ik:= i else ip:=i;
  72.                               end;
  73.                         for i:=j to ip-1 do t2[i]:=t2[i+1];
  74.                         t2[ip]:=x;
  75.                         //Print(t2);
  76.                    end;
  77.                gettime(hour1,minute1,second1,sec1001);
  78.                Czas();
  79.           end;
  80. begin
  81.   Fill;
  82.   Copy;
  83.   //Print(t1);
  84.   readln;
  85.   Sort;
  86.   //readln;
  87.   Sort_2;
  88.   readln;
  89. end.
Advertisement
Add Comment
Please, Sign In to add comment