Sortowanie bąbelkowe

0

Witam mam problem z sortowaniem bąbelkowym listy jednokierunkowej, program mi się zawiesza i nie mogę znaleźć błędu. Przy okazji proszę o przejrzenie poprawności kodu (zastrzegam że jestem BARDZO początkujący):


begin

for i:=1 to last^.lp do
begin
edit:=root;
count:=root;
while count^.next<>nil do
begin

if count^.next^.wiek<count^.wiek then
begin
while (edit^.lp<>count^.lp)and(edit<>nil) do edit:=edit^.Next;
pref:=count;
pref^.next:=count^.next^.next;
edit:=count^.next;
edit^.next:=pref;
end;
count:=count^.Next;
end;
end;

Wskaźnik:

Pelement = ^data;

 data=record
    Next:Pelement;
    lp:integer;
    wiek:18..100; 

Root to pierwszy element na liście, Last- ostatni. Bardzo proszę o szybkie odpowiedzi.

0

Na początek sformatuj kod, porób wcięcia.

Któraś z pętli while nigdy się nie kończy. Dodaj

Application.ProcessMessages

do najgłębszej pętli while (spowolni wykonywanie, ale i tak bąbelkowe jest wolne). Sortuj na małej próbce danych wejściowych - może sortujesz na 20.000 elementów i dlatego tak długo trwa ?

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