All pastes #947994 Raw Edit

Unnamed

public text v1 · immutable
·published 2008-03-18 21:03 UTC
rendered paste body
program scalaniepoprawne;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  windows;

var
zakres,n,o,
q,i,z:longint;

   A,T,S:array[1..10000000] of Longint;
                  start1,stop1:Double;
                  timeEnd,TimeStart,freq,timestart1,timeend1:Int64;
                  czas:double;
F:textfile;

procedure insertionsort;
var
i,j,x:Longint;
Begin
    for j:=2 to n do
      Begin
       x:=A[j];
       i:=j-1;
        while x<a[i] do
          begin
           a[i+1]:=a[i];
           i:=i-1;
          end;
       a[i+1]:=x
      end;

end;
  //wybor
  procedure selectionsort;
var
i,j,k,x:Longint;
begin
 for i:=1 to n-1 do
  begin
    k:=i;
  
    for j:=i+1 to n do
      if a[j]<a[k] then
        Begin
          k:=j;
        end;
        x:=a[k];
      a[k]:=a[i];
      a[i]:=x;
   end;
end;

procedure heapSort;
 var
j,i,k,x,m:Longint;
begin {tworzenie kopca}
 for i:=2 to n do
    begin
       j:=i;
       k:=j div 2;
       x:=a[i];
    while (k >0 ) and (a[k]<x) do
        begin
        a[j]:=a[k];
        j:=k;
        k:=j div 2;
       end;
    a[j]:=x;
  end;

for i:=n downto 2 do
  begin                             // j przechowuje indeks przodka
  x:=a[1];                         // k przechowuje indeks lewego potomka.
  a[1]:=a[i];
  a[i]:=x;
  j:=1;
  k:=2;

  while k < i do
    begin
      if(k+1 < i) and (a[k+1] > a[k]) then
      m:=k+1
      else
      m:=k;
      if (a[m] <= a[j]) then break;
      x:=a[j];
      a[j]:=a[m];
      a[m]:=x;
      j:=m;
      k:=j+j;
   end;
  end;


end;


Procedure shellsort(n:longint);
var
h,t,x,k,i,j :longint;
B:array[1..19] of Longint;
Begin

   if (n <=100) then
    BEgin
      x:=n div 5;
      B[x]:=1;
      for k:=x-1 downto 1 do
      Begin
        B[k]:=3*B[k+1]+1;
      End;
    end;

    if n>100 then
       BEgin
        x:=17;
        B[x]:=1;
         for k:=x-1 downto 1 do
            B[k]:=3*B[k+1]+1;
       end;                    // generowanie tablicy przyrostow

    for k:=1 to x do
       if B[k]<n then
        begin
        h:=B[k]   ;
        
         for i:=n-h downto 1 do
            begin
                t:=a[i];     //zmienna pomocnicza
                j:=i+h;
                while (j<=n) and (t>a[j])  do
                  begin
                    a[j-h]:=a[j];
                    j:=j+h;
                  end;
             a[j-h]:=t;
             end;
       end;
end;








Procedure losowe;
begin
 AssignFile(f,'sortowanie2.txt');
Rewrite(f);
Close(f);

z:=0;
writeln('podaj n');
readln(n);
Writeln('podaj zakres');
readln(zakres);

AssignFile(f,'sortowanie2.txt');
Reset(F);
Append(f);
Writeln(F,'Liczba n    Heap                       ShellSort                   SelectionSort              InsertionSort');
CloseFile(F);

repeat
AssignFile(f,'sortowanie2.txt');
Reset(f);
Append(F);
Write(F,n,'  ');
z:=z+1;
       Writeln(n);
for i:=1 to n do
 begin
 S[i]:=random(zakres)+random(zakres);
 //Write(S[i],' ');
 A[i]:=S[i];
 end;
writeln;

if QueryPerformanceFrequency(Freq) then
QueryPerformanceCounter(TimeStart);
heapsort;
QueryPerformanceCounter(TimeEnd);
czas:=(TimeEnd-TimeStart)/Freq*1000;
writeln('heap :',czas);
Write(F,'  ',czas,'   ');
    for i:=1 to n do
  begin
  // write(A[i],' ');
  end;
//  writeln;
for i:=1 to n do
  begin
  a[i]:=S[i];
  //write(A[i],' ');
  end;
if QueryPerformanceFrequency(Freq) then
QueryPerformanceCounter(TimeStart);
shellsort(n);
QueryPerformanceCounter(TimeEnd);
czas:=(TimeEnd-TimeStart)/Freq*1000;
writeln('shell :',czas);
Write(F,'  ',czas,'  ');
//for i:=1 to n do
 //begin
// write(T[i],' ');
// end;

for i:=1 to n do
  begin
  a[i]:=S[i];
 // write(A[i],' ');
  end;
if QueryPerformanceFrequency(Freq) then
QueryPerformanceCounter(TimeStart);
selectionsort;
QueryPerformanceCounter(TimeEnd);
czas:=(TimeEnd-TimeStart)/Freq*1000;
writeln('selection :',czas);
Write(F,'  ',czas,'  ');

for i:=1 to n do
  begin
   a[i]:=S[i];
  //write(A[i],' ');
  end;
if QueryPerformanceFrequency(Freq) then
QueryPerformanceCounter(TimeStart);
insertionsort;
QueryPerformanceCounter(TimeEnd);
czas:=(TimeEnd-TimeStart)/Freq*1000;
writeln('insert :',czas);
Writeln(F,'  ',czas,'  ');
Closefile(F);

n:=n+5000;
until  n>50000;
//z=2;
//n>100000

  { TODO -oUser -cConsole Main : Insert code here }
end;


Procedure rosnaco;
begin
 AssignFile(f,'rosnaco.txt');
Rewrite(f);
Close(f);

z:=0;
writeln('podaj n');
readln(n);
AssignFile(f,'rosnaco.txt');
Reset(F);
Append(f);
Writeln(F,'Liczba n    Heap                       ShellSort                   SelectionSort              InsertionSort');
CloseFile(F);
repeat
AssignFile(f,'rosnaco.txt');
Reset(f);
Append(F);
Write(F,n,'  ');
z:=z+1;
Writeln(n);
for i:=1 to n do
 begin
 A[i]:=i;
//Write(A[i],' ');
 end;
writeln;
if QueryPerformanceFrequency(Freq) then
QueryPerformanceCounter(TimeStart);
heapsort;
QueryPerformanceCounter(TimeEnd);
czas:=(TimeEnd-TimeStart)/Freq*1000;
writeln('heap :',czas);
Write(F,'  ',czas,'  ');
for i:=1 to n do
 begin
// write(T[i],' ');
 end;
// shellsort
 for i:=1 to n do
 begin
 A[i]:=i;
//Write(A[i],' ');
 end;
writeln;
if QueryPerformanceFrequency(Freq) then
QueryPerformanceCounter(TimeStart);
shellsort(n);
QueryPerformanceCounter(TimeEnd);
czas:=(TimeEnd-TimeStart)/Freq*1000;
writeln('shell :',czas);
Write(F,'  ',czas,'  ');

for i:=1 to n do
 begin
// write(A[i],' ');
 end;
for i:=1 to n do
  begin
  a[i]:=i;
 // write(A[i],' ');
  end;
if QueryPerformanceFrequency(Freq) then
QueryPerformanceCounter(TimeStart);
selectionsort;
QueryPerformanceCounter(TimeEnd);
czas:=(TimeEnd-TimeStart)/Freq*1000;
writeln('selection :',czas);
Write(F,'  ',czas,'  ');

for i:=1 to n do
  begin
   a[i]:=i;
  //write(A[i],' ');
  end;
if QueryPerformanceFrequency(Freq) then
QueryPerformanceCounter(TimeStart);
insertionsort;
QueryPerformanceCounter(TimeEnd);
czas:=(TimeEnd-TimeStart)/Freq*1000;
writeln('insert :',czas);
Writeln(F,'  ',czas,'  ');
Closefile(F);





n:=n+5000;
until n>50000
end;

Procedure malejaco;
begin
AssignFile(f,'malejaco.txt');
Rewrite(f);
Close(F);
z:=0;
writeln('podaj n');
readln(n);
AssignFile(f,'malejaco.txt');
Reset(F);
Append(f);
Writeln(F,'Liczba n    Heap                       ShellSort                   SelectionSort              InsertionSort');
CloseFile(F);


repeat
AssignFile(f,'malejaco.txt');
Reset(f);
Append(F);
Write(F,n,'  ');

 for i:=n downto 1 do
 begin
 A[i]:=(n-i)+1;
// Write(A[i],' ');
 end;
//for i:=1 to n do Write (A[i],' ');
writeln;

readln;
if QueryPerformanceFrequency(Freq) then
QueryPerformanceCounter(TimeStart);
heapsort;
QueryPerformanceCounter(TimeEnd);
czas:=(TimeEnd-TimeStart)/Freq*1000;
writeln('heap :',czas);
Write(F,'  ',czas,'  ');
{for i:=1 to n do
 begin
 write(T[i],' ');
 end;}

  //shellsort

  for i:=n downto 1 do
 begin
 A[i]:=(n-i)+1;
// Write(A[i],' ');
 end;
 writeln;

if QueryPerformanceFrequency(Freq) then
QueryPerformanceCounter(TimeStart);
shellsort(n);
QueryPerformanceCounter(TimeEnd);
czas:=(TimeEnd-TimeStart)/Freq*1000;
writeln('shell :',czas);
Write(F,'  ',czas,'  ');
{for i:=1 to n do
 begin
 write(T[i],' ');
 end;}
for i:=n downto 1 do
  begin
  a[i]:=(n-i)+1;
 // write(A[i],' ');
  end;
if QueryPerformanceFrequency(Freq) then
QueryPerformanceCounter(TimeStart);
selectionsort;
QueryPerformanceCounter(TimeEnd);
czas:=(TimeEnd-TimeStart)/Freq*1000;
writeln('selection :',czas);
Write(F,'  ',czas,'  ');

for i:=n  downto 1 do
 begin
  a[i]:=(n-i)+1;
 // write(A[i],' ');
  end;
 //for i:=1 to n do Write(a[i],' ');
if QueryPerformanceFrequency(Freq) then
QueryPerformanceCounter(TimeStart);
insertionsort;
QueryPerformanceCounter(TimeEnd);
czas:=(TimeEnd-TimeStart)/Freq*1000;
writeln('insert :',czas);
Writeln(F,'  ',czas,'  ');
// Writeln('po');
{  for i:=1  to n do
  begin
   write(A[i],' ');
  end;}
Closefile(F);
 n:=n+5000;
until  n>50000

end;

Procedure staly;
begin
AssignFile(f,'staly.txt');
Rewrite(f);
Close(F);
z:=0;
writeln('podaj n');
readln(n);
AssignFile(f,'staly.txt');
Reset(F);
Append(f);
Writeln(F,'Liczba n    Heap                       ShellSort                   SelectionSort              InsertionSort');
CloseFile(F);


repeat
AssignFile(f,'staly.txt');
Reset(f);
Append(F);
Write(F,n,'  ');

 for i:=n downto 1 do
 begin
 A[i]:=10;
// Write(A[i],' ');
 end;

writeln;


if QueryPerformanceFrequency(Freq) then
QueryPerformanceCounter(TimeStart);
heapsort;
QueryPerformanceCounter(TimeEnd);
czas:=(TimeEnd-TimeStart)/Freq*1000;
writeln('heap :',czas);
Write(F,'  ',czas,'  ');
{for i:=1 to n do
 begin
 write(T[i],' ');
 end;}

  //shellsort

  for i:=n downto 1 do
 begin
 A[i]:=10;
// Write(A[i],' ');
 end;
 writeln;

if QueryPerformanceFrequency(Freq) then
QueryPerformanceCounter(TimeStart);
shellsort(n);
QueryPerformanceCounter(TimeEnd);
czas:=(TimeEnd-TimeStart)/Freq*1000;
writeln('shell :',czas);
Write(F,'  ',czas,'  ');

{for i:=1 to n do
 begin
 write(T[i],' ');
 end;}


 for i:=1 to n do
  begin
  a[i]:=10;
 // write(A[i],' ');
  end;
if QueryPerformanceFrequency(Freq) then
QueryPerformanceCounter(TimeStart);
selectionsort;
QueryPerformanceCounter(TimeEnd);
czas:=(TimeEnd-TimeStart)/Freq*1000;
writeln('selection :',czas);
Write(F,'  ',czas,'  ');

for i:=1 to n do
  begin
   a[i]:=10;
  //write(A[i],' ');
  end;
if QueryPerformanceFrequency(Freq) then
QueryPerformanceCounter(TimeStart);
insertionsort;
QueryPerformanceCounter(TimeEnd);
czas:=(TimeEnd-TimeStart)/Freq*1000;
writeln('insert :',czas);
Writeln(F,'  ',czas,'  ');
Closefile(F);


n:=n+5000;
until  n>50000

end;




Procedure aksztaltny;
Begin

AssignFile(f,'aksztaltny.txt');
Rewrite(f);
Close(F);
q:=1;
writeln('podaj n');
readln(n);
AssignFile(f,'aksztaltny.txt');
Reset(F);
Append(f);
Writeln(F,'Liczba n    Heap                       ShellSort                   SelectionSort              InsertionSort');
CloseFile(F);

repeat
AssignFile(f,'aksztaltny.txt');
Reset(f);
Append(F);
Write(F,n,'  ');

z:=1;                //tworzenie tablicy a-ksztaltny
q:=1;
for i:=1 to (n div 2) do
  Begin
   A[i]:=q;
   q:=q+2;
   T[i]:=A[i];
  // write(a[i],' ');
 End;
 q:=(q+1)*2;
 for i:=(n div 2)+1 to n do
  Begin
   A[i]:=q;
   q:=q-2;
   T[i]:=A[i];
  // Write(a[i],' ');

 End;
 writeln;
 readln;
//heapsort
 if QueryPerformanceFrequency(Freq) then
QueryPerformanceCounter(TimeStart);
heapsort;
QueryPerformanceCounter(TimeEnd);
czas:=(TimeEnd-TimeStart)/Freq*1000;
writeln('heap :',czas);
Write(F,'  ',czas,'  ');
{ for i:=1 to n do
 begin
 write(A[i],' ');
 end;}

            writeln;
//shellsort
for z:=1 to n do
  Begin
    A[z]:=T[z];
    //Write(A[z],' ');
  end;
 if QueryPerformanceFrequency(Freq) then
QueryPerformanceCounter(TimeStart);
shellsort(n);
QueryPerformanceCounter(TimeEnd);
czas:=(TimeEnd-TimeStart)/Freq*1000;
writeln('shell :',czas);
Write(F,'  ',czas,'  ');
{for i:=1 to n do
 begin
 write(A[i],' ');
 end;}

 for z:=1 to n do
  begin
  a[z]:=T[z];
  //write(A[z],' ');
  end;
if QueryPerformanceFrequency(Freq) then
QueryPerformanceCounter(TimeStart);
selectionsort;
QueryPerformanceCounter(TimeEnd);
czas:=(TimeEnd-TimeStart)/Freq*1000;
writeln('selection :',czas);
Write(F,'  ',czas,'  ');

for z:=1 to n do
  begin
   //write(A[z],' ');
   a[z]:=T[z];
  //write(A[i],' ');
  end;
if QueryPerformanceFrequency(Freq) then
QueryPerformanceCounter(TimeStart);
insertionsort;
QueryPerformanceCounter(TimeEnd);
czas:=(TimeEnd-TimeStart)/Freq*1000;
writeln('insert :',czas);
Writeln(F,'  ',czas,'  ');
Closefile(F);
  for z:=1 to n do
  begin
   //write(A[z],' ');
  end;

n:=n+5000;
until    n>50000;

end;








Begin
aksztaltny;
//losowe;
//rosnaco;
//malejaco;
//staly;
readln;
End.