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;