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 8499 16.03.2017, 20:09
Ostatni post: Szachista
  [C++] Sortowanie bąbelkowe - problem z rozwiązaniem zadania bartek164 8 7145 01.12.2016, 11:26
Ostatni post: Szachista
  dev pascal, problem z funkcją kwadratową Sentinel24 4 7774 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
  Pieczętowanie Archiwum Jar - Po co? wanhelsing 3 10132 19.05.2018 20:55
Ostatni post: koneton
  Wyszukiwarka w spawnerze nie reaguje na polskie znaki kazik666 0 9937 16.05.2018 12:04
Ostatni post: kazik666
  BASH symulator silnika dawswi1 3 10407 13.05.2018 10:43
Ostatni post: Szachista
  Autohotkey automatyczny zapis TheProgson 0 10002 07.05.2018 21:27
Ostatni post: TheProgson
  VBA Pobieranie wybranych plików z danymi julietta03 1 10282 04.05.2018 08:25
Ostatni post: broda99
  [VBA] Przenoszenie danych między formularzami Pioro 4 10699 23.04.2018 11:48
Ostatni post: broda99
  Skrypt, który szuka i zamienia armen10 2 10202 23.04.2018 10:04
Ostatni post: armen10
  Liniowa regresja w Pythonie a budowanie modelu Trojan3000 2 10363 16.04.2018 13:26
Ostatni post: Trojan3000
  Początki z bashem - jak napisać skrypty: wysłanie maila i kalkulator? Kristov81 4 14168 21.03.2018 18:32
Ostatni post: Szachista
Ściana Zadanie cmd.... Yanke$ 2 11255 16.03.2018 17:20
Ostatni post: FireBytes
  Poszukuj kogoś do pomocy FireBytes 0 9732 16.03.2018 16:58
Ostatni post: FireBytes
  Program liczący liczby pierwsze Mersenne'a raistin 2 10039 12.03.2018 12:51
Ostatni post: Szachista
  Wykres Funkcji w Javie wanhelsing 4 10608 17.02.2018 22:27
Ostatni post: wanhelsing
  [SQL]procedura zliczania czasu CTRL85 0 9669 17.02.2018 12:58
Ostatni post: CTRL85
  [VBA Excel] Zaokrąglanie liczby w górę Pioro 2 11214 13.02.2018 21:25
Ostatni post: Pioro