All pastes #986463 Raw Edit

Untitled

public text v1 · immutable
·published 2008-04-15 20:36 UTC
rendered paste body
program lista;

{$APPTYPE CONSOLE}

uses
 SysUtils,windows;
 type
   wsk= ^a;
   a = record
   k: longint;
   w: wsk;
 end;



 procedure lista;
   var B,T: array of longint;
    pa,j,p,zakres,n,i,l,x,z,c: longint;
   pierw,poprz,q,head:wsk;
   t1,t2,t3,t4,t5: extended;
   t1a,t1b,t2a,t2b,t3a,t3b,t4a,t4b,t5a,t5b,freq:Int64;
   f:textfile;
   h:boolean;
     begin
     AssignFile(f,'lista.txt');
     reset(f);
     Append(f);
 ///////////////////////////////////////////////////
     readln(n);
      Writeln(F, 'lista n ',n);
      zakres:=3000000;

      SetLength(B,zakres);
      for i:=0 to zakres do B[i]:=1;
      SetLength(T,n);

      p:=random(zakres)+1;
      T[0]:=p;
      B[p]:=0;

      pa:=1;
      if zakres>=n then
      BEgin
      // Writeln('begin');
      // Write(T[0],' ');
      Repeat

      i:=pa;
      j:=random(zakres)+1;
      if B[j]=1 then
          Begin
            T[pa]:=j;
            B[j]:=0;
           //Write('j ',j,'wartosc = ',B[j]);
           // Write(' ',T[a],' ');
            pa:=pa+1;
          end;
       until (pa=(n));
    End
      Else
        BEgin
        Writeln('Zly Zakres');
        readln;
        exit;
        end;

// for i:=0 to n-1 do Write(T[i],' ');
  //              readln;
   if QueryPerformanceFrequency(Freq) then
   QueryPerformanceCounter(t1a);

       pierw:=nil;                         //1)tworzenie
     for i:=0 to n-1 do
       begin
         new(q);
         x:=T[i];
        // Writeln('x ',x);
        // readln;
         q^.k:=x;
         poprz:=pierw;
           if (pierw=nil) or (pierw^.k>q^.k) then
     begin
       q^.w:=pierw;
       pierw:=q;
     end
   else begin
         while (poprz^.w<>nil) and (poprz^.w^.k<q^.k) do
       begin
       poprz:=poprz^.w;
       end;
    q^.w:=poprz^.w;
    poprz^.w:=q;
      end;
    end;
QueryPerformanceCounter(t1b);
   t1:=(t1b-t1a)/Freq*1000;;
   Writeln('czas tworzenia ',t1,' ');
    Writeln(F,'czas tworzenia ',t1:0:2,' ');
{head:=pierw;
while head<>nil do
begin
write(head.k,' ');
head:=head.w;     
end;  }
//  readln;
   ////////////////////////////////////////////////
   if QueryPerformanceFrequency(Freq) then
   QueryPerformanceCounter(t3a);
head:=pierw;
 z:=n div 10;
    for c:=1 to z do                  //3)wyszukiwanie wylosowanych elementów
 begin
 x:= random(zakres)+1;
  //x:=2;
  while head <> nil do
  begin
  if head.k=x then  write('tak');//h:=true;
  head:=head.w;
  end;
 // write('head',head.k);
 // write('x',x);
  //if head.k=x then  write('tak');//h:=true;
end;














QueryPerformanceCounter(t3b);
   t3:=(t3b-t3a)/Freq*1000;;
   Writeln('czas wyszukiwania ',t3,' ');
     Writeln(F,'czas wyszukiwania ',t3:0:2,' ');
//////////////////////////////////////////////////////////
    if QueryPerformanceFrequency(Freq) then
   QueryPerformanceCounter(t5a);
 head:=pierw;
    while head<>nil do
begin
head.k:=head.k+1;
head:=head.w;
end;
QueryPerformanceCounter(t5b);
   t5:=(t5b-t5a)/Freq*1000;;
   Writeln('czas przegladania ',t5,' ');
    Writeln(F,'czas przegladania ',t5:0:2,' ');
///////////////////////////////////////////////////////////

   if QueryPerformanceFrequency(Freq) then
   QueryPerformanceCounter(t2a);
 z:=n div 10;
   // for c:=1 to z do                  //2)dodawanie wylosowanych elementów
 begin
 x:= random(zakres)+1;
 //writeln(x,' wylosowany ');
 new(q);
         q^.k:=x;
         poprz:=pierw;
           if (pierw=nil) or (pierw^.k>q^.k) then
     begin
       q^.w:=pierw;
       pierw:=q;
     end
   else begin
         while (poprz^.w<>nil) and (poprz^.w^.k<q^.k) do
       begin
       poprz:=poprz^.w;
       end;
    q^.w:=poprz^.w;
    poprz^.w:=q;
    end;
   end;



//  writeln;
{head:=pierw;
    while head<>nil do
begin
write(head.k,' ');
head:=head.w;
end;      }
QueryPerformanceCounter(t2b);
   t2:=(t2b-t2a)/Freq*1000;;
   Writeln('czas dodawania losowych elementów ',t2,' ');
   Writeln(F,'czas dodawania ',t2:0:2,' ');
   ///////////////////////////////////////////////////////////

 {  if QueryPerformanceFrequency(Freq) then
   QueryPerformanceCounter(t3a);
head:=pierw;
 z:=n div 10;
    for c:=1 to z do                  //3)wyszukiwanie wylosowanych elementów
 begin
 x:= random(zakres)+1;
  while (head.k=x) or (head=nil) do
  head:=head.w;
  end;
QueryPerformanceCounter(t3b);
   t3:=(t3b-t3a)/Freq*1000;;
   Writeln('czas wyszukiwania ',t3,' '); }
//////////////////////////////////////////////////
   if QueryPerformanceFrequency(Freq) then
   QueryPerformanceCounter(t4a);
   for c:=1 to Z do             //4)usuwanie
    begin
      x:=random(zakres)+1;
if x>=pierw^.k then
begin
if x=pierw^.k then
begin
pierw:=pierw^.w;
dispose(head);
end
else
begin
while (head^.w<>nil) or (head^.w^.k<x) do
begin
head:=head^.w;
if head^.w^.w=nil then
post:=head;
end;
if(head^.w^.k=x) or (head^.k=x) then
begin
if head^.w^.k=x then
begin
q:=head^.w;
head^.w:=q^.w;
dispose(q);
end
else
begin
q:=post^.w;
post^.w:=nil;
dispose(q);
end;
end;
end;
end;
end;

{   writeln('after');
  head:=pierw;
    while head<>nil do
begin
write(head.k,' ');
head:=head.w;
end;}
QueryPerformanceCounter(t4b);
   t4:=(t4b-t4a)/Freq*1000;;
   Writeln('czas usuwania ',t4,' ');
   Writeln(F,'czas usuwania ',t4:0:2,' ');
   Closefile(F);
//////////////////////////////////////////////////////////
{   if QueryPerformanceFrequency(Freq) then
   QueryPerformanceCounter(t5a);
 head:=pierw;
    while head<>nil do
begin
head.k:=head.k+1;
head:=head.w;
end;
QueryPerformanceCounter(t5b);
   t5:=(t5b-t5a)/Freq*1000;;
   Writeln('czas przegladania ',t5,' ');}
{   writeln('ending');
  head:=pierw;
   while head<>nil do
begin
write(head.k,' ');
head:=head.w;
end;}
  t:=nil;
  b:=nil;
  end;

 // procedure przegladanie;
////////////////////////////////////////////
begin
lista;

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


 readln;
 end.