SelectSort
Uspořádávání přímým výběrem
Přímý výběr je přímočarý a jednoduchý algoritmus, který je vhodné použít u krátkých polí. Algoritmus projde celé pole a najde nejmenší prvek,který prohodí s prvním prvkem pole. Takto získané pole má nejmenší prvek na začátku. Algoritmus pokračuje hledáním nejmenčího čísla, které umístí na pozici o jednu větší, než při předchozím průchodu.
| 3 | 5 | 2 | 1 | 4 | 10 | 8 | 6 | 9 | 7 |
| 1 | 5 | 2 | 3 | 4 | 10 | 8 | 6 | 9 | 7 |
| 1 | 2 | 5 | 3 | 4 | 10 | 8 | 6 | 9 | 7 |
| 1 | 2 | 3 | 5 | 4 | 10 | 8 | 6 | 9 | 7 |
| 1 | 2 | 3 | 4 | 5 | 10 | 8 | 6 | 9 | 7 |
| 1 | 2 | 3 | 4 | 5 | 10 | 8 | 6 | 9 | 7 |
| 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 9 | 7 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 9 | 8 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|
Neaktivní čísla Čísla která se vymění Čísla která se vymění |
|
Takto vypadá Selektsort v Delphi Procedure
SelectSort(var p:TpoleCisel); // uspořádá pole
podle velikosti
var i,j,min,index:integer; begin for i:=0 to (length(p)-1) do //pro všechny prvky kromě posledního begin // uspořádání úseku pole od indexu i do konce: min:=p[i]; index:=i; //předpokládáme, že p[i] je minimální for j:=i+1 to length(p) do //procházíme ostatní prvky if p[j]<min then //jestliže nalezneme menší ... begin min:=p[j]; index:=j; // ... zapamatujeme si ho end; if index <> j then begin p[index]:=p[i]; // nejmenší prvek dáme p[i]:=min; // na začátek úseku end; end; |