Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

[Pascal/Delphi] Sortowanie quicksort oraz scalanie.

#1
[Pascal/Delphi] Sortowanie quicksort oraz scalanie.
Witam. Otóż mam problem z ww.  algorytmami. Program się kompiluje, lecz w obydwóch przypadkach nic nie sortuje. Może mnie ktoś nakierować co jest nie tak?

Sortowanie qs:

Kod:
procedure qs (t11:tabi;l:integer;r:integer);
var
i,j,k,wyb:integer;
w:integer;
begin

clrscr;
writeln ('Ktora tablice chcesz posortowac?');
writeln;
writeln ('1. Liczb calkowitych');
writeln ('2. Liczb rzeczywistych');

w:=t11[(l + r) div 2];
i:=l;
j:=r;

while (i<j) do begin
 while (t11[i]<w) do
 i:=i+1;

   while (t11[j]>w) do
   j:=j-1;

    if (i<=j) then begin
    k:=t11[i];
    t11[i]:=t11[j];
    t11[j]:=k;
    inc (i);
    dec (j);
    end;

end;

if( j>l ) then qs( t11 ,l, j);
if( i<r ) then qs( t11,i, r );


for i:=0 to length (t11)-1 do begin
write (' ',t11[i],' ');
end;
end;      
Scalanie:
Kod:
procedure scalanie (t11,t111:tabi;  t22,t222:tabr;  ip,ik:integer);
var
i_s,i1,i2,wyb,i:integer;

begin


clrscr;
writeln ('Ktora tablice chcesz posortowac?');
writeln;
writeln ('1. Liczb calkowitych');
writeln ('2. Liczb rzeczywistych');
readln (wyb);

if (wyb)=1 then begin
i_s:=(ip+ik+1)div 2;

if i_s-ip>1 then scalanie (t11,t111,t22,t222,ip,i_s-1);
if ik-i_s>0 then scalanie (t11,t111,t22,t222,i_s,ik);
i1:=ip;
i2:=i_s;

       for i:=ip to ik do begin
           if (i1=i_s) or ((i2<=ik)  and (t11[i1]>t111[i2])) then begin
           t11[i]:=t111[i2]; inc (i2);
           end else begin
               t11[i]:=t111[i1];
               inc (i1);
                        end;
                                end;

for i:=ip to ik do begin
t11[i]:=t111[i];
end;
                       end;


for i:=0 to length (t11)-1 do begin
write (' ',t11[i],' ');
end;

end;
 System operacyjny: windows_seven Przeglądarka: chrome
#2
RE: [Pascal/Delphi] Sortowanie quicksort oraz scalanie.
Witam, w drugim wywołaniu funkcji qs powinieneś mieć i+1 zamiast i.
 System operacyjny: linux_ubuntu Przeglądarka: firefox
#3
RE: [Pascal/Delphi] Sortowanie quicksort oraz scalanie.
Jeżeli chodzi o qs to problem już wczoraj rozwiązałem.Nadal jednak nie mogę sobie poradzić ze scalaniem...

Edit:

Zauważyłem też, że po wykonaniu sortowania (w procedurze) mój parametr, który jest tablicą (zadeklarowana bez dopisku var) zostaje przekazany do programu głównego. Dlaczego procedura operuje na "głównej" tablicy, a nie na kopii?
 System operacyjny: windows_seven Przeglądarka: chrome
#4
RE: [Pascal/Delphi] Sortowanie quicksort oraz scalanie.
Zapewne w Pascalu tablica też jest przekazywana przez adres. Ciężko trochę zrozumieć Twój kod.
Na końcu masz kod źródłowy.
 System operacyjny: linux_ubuntu Przeglądarka: firefox
Programy: Polecane / Nowe / Inne




Podobne wątki ([Pascal/Delphi] Sortowanie quicksort oraz scalanie.)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  [C++] Scalanie dwóch posortowanych tablic soul1648 5 10085 16.03.2017, 20:09
Ostatni post: Szachista
  [C++] Sortowanie bąbelkowe - problem z rozwiązaniem zadania bartek164 8 8313 01.12.2016, 11:26
Ostatni post: Szachista
  dev pascal, problem z funkcją kwadratową Sentinel24 4 9141 21.10.2016, 11:20
Ostatni post: koneton

Skocz do:


Wybrane wątki ([Pascal/Delphi] Sortowanie quicksort oraz scalanie.)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Przekazywanie wskaźnika przez referencję w Qt Trojan3000 3 15214 10.12.2019 13:16
Ostatni post: Ajgor
  Proszę o pomoc w uzupełnieniu ankiety dt. Zawodu Programisty MaleMonki 0 3760 17.11.2019 12:47
Ostatni post: MaleMonki
  Spring framework – jakie strony polecacie do nauki? olek23 5 9038 15.11.2019 15:57
Ostatni post: Alsenas
  Programowanie windy (problem) w C++ mysza2323 2 8285 06.11.2019 23:04
Ostatni post: mysza2323
  Programy w C ~Anonim 1 8520 22.10.2019 17:48
Ostatni post: Szachista
  Wyświetlanie informacji z bazy danych na stronie www PitPlay 1 9121 16.09.2019 11:18
Ostatni post: Ajgor
  Błąd przy uruchamianiu programu w Java z wiersza poleceń Physicist 3 4703 30.08.2019 14:16
Ostatni post: Physicist
  Python z wiersza poleceń Physicist 15 24478 21.08.2019 20:14
Ostatni post: Physicist
  Transfer plików via FTP Visual Basic FireBytes 3 7211 15.08.2019 07:41
Ostatni post: Szachista
  Menu wysuwane z boku patryk67 1 8901 07.08.2019 12:43
Ostatni post: aht
  Visual Basic Excel l.całkowitą przedstawić w postaci szesnastkowej fugaz 4 10828 18.06.2019 21:36
Ostatni post: fugaz
  Nauka do Olimpiady Informatycznej? piotr0905 1 10216 08.06.2019 16:50
Ostatni post: wlisik
Ściana Prosta gra w Builder C++ Kiranek1 1 10246 31.05.2019 15:20
Ostatni post: Szachista
  Menu (Nie widoczne długie opisy) wanhelsing 5 12213 28.04.2019 19:31
Ostatni post: koneton
  Skrypt usuwający pliki sylwiaa1 2 4654 28.04.2019 15:20
Ostatni post: sylwiaa1