Sortowanie scalanie

0

Witam. Mam problem ze stworzeniem programu na sortowanie przez scalanie w pascalu oto moje dwie funkcje które mają wykonać to sortowanie:

procedure scal(le,srodek,r:integer; var t:tab);
var i,j,k:integer;
tp:tab;
begin
     i:=le;
     k:=1;
     j:=srodek;
     while (i<=srodek) and (j<=r) do
     begin
          if t[i]<t[j] then
          begin
               tp[k]:=t[i];
               i:=i+1;
          end
          else
          begin
                tp[k]:=t[j];
                j:=j+1
          end;
          k:=k+1;
     end;

     if(i<=srodek) then
     begin
         while(i<=srodek) do
         begin
              tp[k]:=t[i];
              i:=i+1;
              k:=k+1;
         end;
      end
      else
         while(j<=r) do
         begin
              tp[k]:=t[i];
              j:=j+1;
              k:=k+1;
         end;


         for i := l to r do t[i] := tp[i-le+1];
 

i

 procedure scalanie(le,r: integer; var t:tab);
var
srodek:integer;
i1,i2,i:integer;
p : tab;
begin
     srodek:=((le+r+1) div 2);
     if(srodek>l+1) then
     scalanie(le,srodek-1,t);
     if(r>srodek)then
     scalanie(srodek,r,t);
     scal(le,srodek,r,t);
end;

Podejrzewam, że błąd jest w procedurze scal ale nie mogę go wychwycić, wszystko wydaje się być tam logiczne ale jednak jest tam błąd. Będę bardzo wdzięczny za odpowiedź. Siedzę nad tym już od czterech godzin :(.

0

wiesz co... powiem tak: nie wiedzialem co to jest sortowanie przez scalenie, dlatego zapytalem googli.
pierwszym wynikiem bylo haslo w wikipedii, gdzie jest gotowy kod. na dodatek w pascalu.
jesli korzystales z tego kodu i zle go przepisales no to tylko pogratulowac...
jesli nie korzystales to skorzystaj. //w tym przypadku rowniez "gratuluje" ze zadajesz pytanie na forum zamiast samemu cos pomyslec.

0

Zgadzam się w 100%, że ten program jest na wiki, problem w tym, że też nie jest do końca poprawny. Nie ma tam nawet typów zmiennych w deklaracji procedury. Jednak sam algorytm wydawał mi się poprawny. Objawy działania programu są takie, że owszem sortuje i zdarza się czasem nawet, że 30 kolejnych wyrazów jest posortowanych rosnąco ale potem wszystko się zaburza. Nie mam pojęcia w czym jest problem, sama procedura scal wydaje mi się bez błędów ale czuje że to w niej tkwi problem. Będę wdzięczny za pomoc

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