Třídění polí v Pascalu
|
Bubble sort s kontrolou setřízenosti | Obyčejný Bubble sort | komentáře |
---|---|---|
program bubblesort; var pole: array[1..20] of integer; i: integer; j: boolean; Procedure Swap(var a,b:integer); var temp:integer; Begin temp:=a; a:=b; b:=temp; End; BEGIN |
program bubblesort; BEGIN |
definice proměnných a procedury přehazující dvě pole |
randomize; write('Neseřazené pole: '); for i := 1 to 20 do begin pole[i] := random(99) + 1; write(pole[i], ' '); end; writeln; |
randomize; write('Neseřazené pole: '); for i := 1 to 20 do begin pole[i] := random(99) + 1; write(pole[i], ' '); end; writeln; |
vytvoření ukázkového nesetřízeného pole |
repeat j:=true; for i := 1 to 19 do if pole[i] > pole[i+1] then begin Swap(pole[i], pole[i+1]); j:=false; end; until j=true; |
for i := 1 to 19 do for j := i+1 to 20 do if pole[i] > pole[j] then Swap(pole[i], pole[j]); |
vlastní třízení ... |
write('Seřazené pole: '); |
write('Seřazené pole: '); |
závěr |
Metoda Quick Sort se dá napsat takto:
program Quick; var pole: array[1..20] of integer; i, j, PIVOT: integer; Procedure Swap(var a,b:integer); var temp:integer; Begin temp:=a; a:=b; b:=temp; End; procedure quicksort(L, R: integer); begin if L < R then begin i := L + 1; j := R; PIVOT := pole[L]; repeat while pole[i] <= PIVOT do inc(i); while pole[j] > PIVOT do dec(j); if i < j then Swap(pole[i],pole[j]); until i > j; pole[L] := pole[j]; pole[j] := PIVOT; quicksort(L, j-1); quicksort(i, R); end; end; begin randomize; Writeln; write('Neseřazené pole: '); for i := 1 to 20 do begin pole[i] := random(99) + 1; write(pole[i], ' '); end; Writeln; quicksort(1, 20); write('Seřazené pole: '); for i := 1 to 20 do write(pole[i], ' '); end. |
Jak můžete vidět, algoritmus si sám nastavuje hranice třídění a tím dosáhne toho, že ignoruje již setříděné části.
Další třídící algoritmy jsou uloženy v souboru sorting.zip (39 kB).
Pokud se soubor nestáhne, ale otevře v novém okně, budete si muset uložit odkaz jako soubor (z Microsoft Exploderu, nebo Netscape Navigatoru se klikne pravým tlačítkem a zvolí se správná volba z menu...) .
WEBovský
počítadlo spočítalo, že si číslo
|