przyklady sortowania

0

interesuje mnie jakis przyklad sortowania tablicy ale nie integer a string. chodzi mi metody: "szybkie sortowanie" oraz sortowanie "bąbelkowe". szukalem w algorytmach ale wlasnie tam jest sortowanie integer a mnie to nie ratuje :( moze ktos pomoc?
z gory dziekuje.

pozdro.

0

Chyba nie rozumiesz istoty algorytmów sortowania. Algorytm to sposób realizacji zadania - w tym przypadku jest to odpowiednia zmiana kolejności występowania elementów. Jednak każdy algorytm potrzebuje informacji na temat tego, czy element A jest większy/mniejszy od elementu B.

To jaki algorytm wybierzesz (QuickSort, BubbleSort, HeapSort, ....) jest obojętne (różnica będzie w złożoności i szybkości), ale każdy z tych algorytmów potrzebuje funkcję porównującą 2 elementy danego typu.

Jeśli porównujesz liczby całkowite, to do porownania 2 wartości wystarczy Ci operator np. większy niż ">".

Jeśli porównujesz łańcuchy znaków, to możesz napisać własną funkcję lub wykorzystać standardową z WinAPI lstrcmp() lub dowolną inną.

Sam algorytm pozostaje bez najmniejszych zmian.

0

http://www.algorytm.cad.pl/

tam masz przykłady algorytmów sortowania i nie tylko

0

mam taki rekord:

TDataRec = record
Tytul : String[150] ;
Wykonawca : String[150] ;
Rodzaj : String[65] ;
Opis : String[250] ;
end;

przypisuje go do tablicy:

var
Tablica : array [1..50] of TDataRec;

mam taka procedurke sortowania:

Procedure QuickS(Lo ,Hi:Integer);
Var Down,Up,J:Integer;
A:TDataRec;
Begin
A:=Tablica[Lo]; J:=Lo;
Down:=Lo; Up:=Hi;
Repeat
While (Up>Down) And (A.Wykonawca<=Tablica[Up].Wykonawca) Do Dec(Up);
J:=Up;
If Up <> Down Then
Begin
Tablica[Down]:=Tablica[Up];
While (down<up)And(Tablica[down].Wykonawca<=A.Wykonawca) Do Inc(down);
J:=Down;
If Down <> Up Then Tablica[Up]:=Tablica[Down];
End;
Until Down=Up;
Tablica[J]:=A;
If LO <UP Then QuickS(Lo,J-1);
If DOWN<HI Then QuickS(J+1,Hi);
End;

i teraz chce dodac ta tablice do listview:

var
ListItem: TListItem;
begin
QuickS(1,50);
for i:=1 to element do
begin
ListItem := Mp3List.Items.Add;
Listitem.Caption:= Tablica[i].Tytul;
ListItem.SubItems.Add(Tablica[i].Wykonawca);
ListItem.SubItems.Add(Tablica[i].Rodzaj);
ListItem.SubItems.Add(Tablica[i].Opis);
end;

end;

tak sie sklada dziwnie ze po wykonaniu tych czynnosci NIC sie nie dzieje. ma ktos jakis pomysl??

pozdro.

0

Nie zagłębiałem się w kod, ale przy zwykłym porównaniu stringów, najpierw pod uwagę brana jest długość łańcuchów, więc nie będzie to sortowanie w porządku leksykograficznym (czego zapewne się spodziewałeś.
A co do kodu, to nie bardzo mi się podoba to sortowanie. Jakoś nie widzę tam QuickSorta (gdzie tam jest rozdział na dwie/trzy części? Nie zamieniasz miejscami dwóch elementów?)

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