MERGE SORT // HEAP SORT

0

Czy ktos jest w stanie napisać mi procedure do tych typów sortowań ?? Oczywiście pod Pascala. Mam zrobic referat opisujacy 6 typów sortowania + napisac program je wykorzystujacy. Mam już 5 ale nie moge napisac ostatniego 6 ;/ HEAP SORT to porażka spędziłem nad tym juz jakies 3 h i nie ejstem w stanie wybrnąć ..

kod mojego programu:

program sortowania;
Uses CRT;

var
T:array[1..100] of Integer;
T1:array[1..100] of Integer;
i,j,k,l,n,m,x:integer;
nr : Byte;


procedure czytaj;
begin
  writeln('Podaj ilość liczb');
  readln(n);
  writeln('Podawaj kolejno liczby');
  for i:=1 to n do readln(T[i]);
end;


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


procedure babelki;
begin
writeln;
writeln('Wybrano sortowanie bąbelkowe');
writeln;
czytaj;
for i:=2 to n do
 begin
   if T[j-1]>T[j] then
    begin
      k:=T[j-1];
      T[j-1]:=T[j];
      T[j]:=k;
    end;
 end;

pisz;
readln;
end;


procedure wstawianie;
begin
writeln;
writeln('Wybrano sortowanie przez wstawianie');
writeln;
czytaj;
for i:=2 to n do
 begin
   T[0]:=T[i];
   j:=i-1;
   while
     T[0]<T[j] do
     begin
      T[j+1]:=T[j];
      j:=j-1;
     end;
    T[j+1]:=T[0];
 end;
 pisz;
 readln;
end;


procedure wybieranie;
begin
writeln;
writeln('Wybrano sortowanie przez wybieranie');
writeln;
czytaj;
for i:=1 to n-1 do
  begin
  k:=T[i];
  l:=i;
   for j:=i+1 to n do
   begin
     if T[j]<T[i] then
     begin
       k:=T[j];
       l:=j;
     end;
   end;
if l>i then
begin
  T[l]:=T[i];
  T[l]:=k;
end;
end;
pisz;
readln;
end;


procedure quicksort(x,y : Integer);
var
j,k,l,z,wyr : Integer;

begin
  k:=x;
  j:=y;
  wyr:=T[(x+y) div 2];
  repeat
    while T[k]<wyr do k:=k+1;
    while T[j]>wyr do j:=j-1;
      if k<=j then
        begin
         z:=T[j];
         T[j]:=T[k];
         T[k]:=z;
         k:=k+1;
         j:=j-1;
        end;
    until   k>j;
    if k<y then quicksort(k,y);
    if x<j then quicksort(x,j);
    end;


procedure kubelek;
begin
writeln;
writeln('Wybrano sortowanie kubełkowe');
writeln;
czytaj;
for i:=1 to m do T[i]:=0;
for i:=1 to n do T[T1[i]]:=T[T1[i]]+1;
x:=1;
for i:=1 to m do begin
  while (T[i]>0) do begin
    T1[x]:=i;
    T[i]:=T[i]-1;
    x:=x+1;
  end;
end;
pisz;
end;



{PROGRAM GŁÓWNY}

begin
 textbackground(9);
 textcolor(14);
 clrscr;
 writeln('                 MENU GŁÓWNE PROGRAMU');
 writeln;
 writeln;
 textcolor(15);
 writeln('    1: - Sortowanie bąbelkowe');
 writeln;
 writeln('    2: - Sortowanie przez wstawianie');
 writeln;
 writeln('    3: - Sortowanie przez wybieranie');
 writeln;
 writeln('    4: - Sortowanie Quicksort');
 writeln;
 writeln('    5: - Sortowanie kubelkowe');
 writeln;
 textcolor(14);
 write('          Podaj numer opcji: '); readln(nr);
 writeln;
 writeln;

 case nr of

  1 : begin
      babelki;
      end;

  2:  begin
      wstawianie;
      end;

  3 : begin
      wybieranie;
      end;

  4 : begin
      writeln;
      writeln('Wybrano sortowanie Quicksort');
      writeln;
      czytaj;
      quicksort(1,n);
      pisz;
      readln;
      end;

  5 : begin
      kubelek;
      readln;
      end;
end;
end.




0

Chcialem cos pod pascala a nie pod Delphi ..

1 użytkowników online, w tym zalogowanych: 0, gości: 1