Řazení výběrem: Porovnání verzí
Smazaný obsah Přidaný obsah
Opraven odkaz C# |
dva naprosto stejné programovací jazyky jako ten předchozí (z toho jeden byl špatně a nešel ani přeložit) vyhozeny; příklad na stabilitu opraven na takový, který se tak opravdu chová, a doplněna poznámka o alternativní implementaci |
||
Řádek 1:
[[
[[
'''Řazení výběrem''' ({{Vjazyce|en}} {{Cizojazyčně|en|'''selection sort'''}}) je implementačně jednoduchý [[Algoritmus řazení|řadicí algoritmus]] s časovou složitostí {{math|[[asymptotická složitost|''O'']](<var>N</var>²)}}. Pro svou jednoduchou [[implementace|implementaci]] a nízký [[overhead]] bývá často používán pro uspořádávání malých množství dat. Pro větší objem dat se používají algoritmy s nižší časovou složitostí {{math|''O''(<var>N</var> log <var>N</var>)}} jako [[Heapsort]] nebo [[Merge sort|Mergesort]].
Řádek 17:
Algoritmus není [[Stabilní řazení|stabilním]] (může změnit pořadí u prvků se shodným klíčem).
Je to dáno tím, že se prohazují nesousední prvky. Například pokud uvážíme [[Množina|množinu]] <math>M = \{
Řazení výběrem je možno implementovat i stabilně, pokud se místo záměny prvků použije přesunutí nalezeného nejmenšího prvku na příslušné místo, k tomu je ovšem potřeba použití datové struktury s rychlým vkládáním a odstraňováním, například [[spojový seznam]], jinak výrazně zhorší výkonnost algoritmu.
== Implementace algoritmu v jazyce [[C (programovací jazyk)|C]] ==▼
<source lang="c">
void selectionSort(int data[], int count)
Řádek 28 ⟶ 31:
mi = i;
for (j = i+1; j < count; j++) {
mi = j;
}
}
/* vyměníme data[i] a data[mi] */
Řádek 38 ⟶ 41:
}
}
▲== Implementace algoritmu v jazyce [[C Sharp|C#]] ==
</source>
|