Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program project1;
- uses
- crt, DOS;
- const
- n = 100;
- type
- Tab = Array[1..n] of Integer;
- var
- RandomTab: Tab;
- i: Integer;
- hours, min, sec, sec100: word;
- time1, time2: Int64;
- procedure Swap (var a, b: Integer);
- var
- temp: Integer;
- begin
- temp := a;
- a := b;
- b := temp;
- end;
- procedure Wybieranie(RndTab: Tab; length: Integer);
- var
- i , j, minimal: Integer;
- begin
- GetTime(hours, min, sec, sec100);
- time1 := sec100 + sec*100 + min*6000 + hours*360000;
- for i := 1 to length do
- begin
- minimal := i;
- for j := i+1 to length do
- begin
- if RndTab[j] < RndTab[minimal] then
- begin
- minimal := j;
- end;
- end;
- swap(RndTab[i], RndTab[minimal]);
- end;
- GetTime(hours,min,sec,sec100);
- time2 := sec100 + sec*100 + min*6000 + hours*360000;
- WriteLn('Czas przez wybieranie: ', time2-time1);
- {for i := 1 to length do
- begin
- Write(RndTab[i], ' ');
- end;}
- end;
- procedure Wstawianie(RndTab: Tab; length: Integer);
- var
- tmp: Integer;
- i, j: Integer;
- begin
- GetTime(hours,min,sec,sec100);
- time1 := sec100 + sec*100 + min*6000 + hours*360000;
- for j := 2 to length do
- begin
- tmp := RndTab[j];
- i := j - 1;
- while (i >= 0) and (tmp < RndTab[i]) do
- begin
- RndTab[i + 1] := RndTab[i];
- i := i - 1;
- end;
- RndTab[i + 1] := tmp;
- end;
- GetTime(hours,min,sec,sec100);
- time2 := sec100 + sec*100 + min*6000 + hours*360000;
- WriteLn('Czas przez wstawianie: ', time2-time1);
- {for i := 1 to n do
- begin
- Write(RndTab[i], ' ');
- end; }
- end;
- procedure Babelkowe(RndTab: Tab; length: Integer);
- var
- i, j: Integer;
- begin
- GetTime(hours,min,sec,sec100);
- time1 := sec100 + sec*100 + min*6000 + hours*360000;
- for j := 1 to length - 1 do
- begin
- for i := 1 to length - j do
- begin
- if RndTab[i] > RndTab[i + 1] then
- begin
- swap(RndTab[i], RndTab[i + 1]);
- end;
- end;
- end;
- GetTime(hours,min,sec,sec100);
- time2 := sec100 + sec*100 + min*6000 + hours*360000;
- WriteLn('Czas babelkowo: ', time2-time1);
- { for i := 1 to n do
- begin
- Write(RndTab[i], ' ');
- end; }
- end;
- procedure HeapSort(var RndTab : Tab; lenght: Integer);
- var
- i, j, k, l, tmp : Integer;
- begin
- GetTime(hours,min,sec,sec100);
- time1 := sec100 + sec*100 + min*6000 + hours*360000;
- for i := 2 to lenght do
- begin
- j := i;
- k := i div 2;
- tmp := RndTab[i];
- while ( ( k > 0 ) and ( RndTab[k] < tmp ) ) do
- begin
- RndTab[j] := RndTab[k];
- j := k;
- k := j div 2;
- end;
- RndTab[j] := tmp;
- end;
- for i := lenght downto 2 do
- begin
- swap( RndTab[1], RndTab[i] );
- j := 1;
- k := 2;
- while ( k < i ) do
- begin
- if ( ( k+1 < i ) and ( RndTab[k+1] > RndTab[k] ) ) then
- begin
- l := k + 1;
- end else
- begin
- l := k;
- end;
- if ( RndTab[l] <= RndTab[j] ) then break;
- swap( RndTab[j], RndTab[l] );
- j := l;
- k := 2*j;
- end;
- end;
- GetTime(hours,min,sec,sec100);
- time2 := sec100 + sec*100 + min*6000 + hours*360000;
- WriteLn('Czas przez kopcowanie: ', time2-time1);
- { for i := 1 to n do
- begin
- Write(RndTab[i], ' ');
- end;}
- end;
- procedure Quicksort(var RndTab: Tab; left: Integer; right: Integer);
- var
- pivot, i, j, bufor: Integer;
- begin
- pivot := RndTab[(left + right) div 2];
- i := left ;
- j := right;
- repeat
- while (RndTab[i] < pivot) do i := i + 1;
- while (RndTab[j] > pivot) do j := j - 1;
- if i <= j then
- begin
- if i < j then
- begin
- swap(RndTab[i], RndTab[j]);
- end;
- i := i + 1;
- j := j - 1;
- end;
- until i > j;
- if j > left then Quicksort(RndTab, left, j);
- if i < right then Quicksort(RndTab, i, right);
- end;
- begin
- Randomize;
- for i := 1 to n do
- begin
- RandomTab[i] := Random(1000);
- end;
- WriteLn;
- WriteLn;
- Wybieranie(RandomTab, n);
- WriteLn;
- WriteLn;
- Wstawianie(RandomTab, n);
- WriteLn;
- WriteLn;
- Babelkowe(RandomTab, n);
- WriteLn;
- WriteLn();
- HeapSort(RandomTab, n);
- WriteLn;
- WriteLn;
- GetTime(hours,min,sec,sec100);
- time1 := sec100 + sec*100 + min*6000 + hours*360000;
- Quicksort(RandomTab, 1, n);
- GetTime(hours,min,sec,sec100);
- time2 := sec100 + sec*100 + min*6000 + hours*360000;
- WriteLn('Czas quicksort: ', time2-time1);
- {for i := 1 to n do
- begin
- Write(RandomTab[i], ' ');
- end; }
- ReadKey;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement