Selection Sort
template < class ForwardIterator >
void g_selection_sort (ForwardIterator beg, ForwardIterator end)
{
ForwardIterator i, j, k;
for (i = beg; i != end; ++i)
{
k = i;
for (j = i; j != end; ++j)
if (*j < *k)
k = j;
Swap (*i, *k);
}
}
in place
not stable (call to Swap may change order of equal elements)
exactly n(n + 1)/2 calls to comparison operator on any input
run time = Θ(n2) (worst, average, best cases)
requires forward iterators