Algorytm można nieco przyspieszyć, gdy tablica jest wypełniana z obu końców, tj. wyszukiwane jest równocześnie minimum i maksimum.

Implementacja Sortowanie przez wybieranie w C++:

przez wyszukiwanie największego składnika: int Max_element_indeks(int n)

int max = 0; for (int i = 1; i < n; i++) if (t[i] > t[max]) max = i; return max;

void Selection_sort(int n)

for (int i = n; i >= 2; i--)

int max = Max_element_indeks(i); if (max != i - 1) swap(t[i - 1], t[max]);

template<typename It> void selection_sort(It begin, It end) { for (; begin != end; ++begin) std::iter_swap(begin, std::min_element(begin, end)); }

przez wyszukiwanie najmniejszego składnika: #include <cstdlib> #include <iostream> #include <ctime>

using namespace std;

void selection_sort(int n, int t[]);

int main(void) { int tab; srand(time(NULL)); for(int i=0; i<20; i++) { tab[i] = rand()%100; cout << tab[i] << " ";

cout << endl; selection_sort(20, tab); for(int i=0; i<20; i++) cout << tab[i] << " "; cout << endl; return 0; }

void selection_sort(int n, int t[]) { int i, j, k; for(i=0; i<n; i++) { k=i; for(j=i+1; j<n;