template <class Item> void Median_Of_Three(Item* Array, long& L, long& R) { if (Array[++L - 1] > Array[--R]) Exchange(Array, L - 1, R); if (Array[L - 1] > Array[R / 2]) Exchange(Array, L - 1, R / 2); if (Array[R / 2] > Array[R]) Exchange(Array, R / 2, R); Exchange(Array, R / 2, R - 1); }
template <class Item> void Exchange(Item* Array, long i, long j) { Item temp; temp = Array[i]; Array[i] = Array[j]; Array[j] = temp; } Kod procedury Heap Sort to kod sortowania przez kopcowanie:
template <class Item> void Heap_Sort(Item* Array, long N) { for (long i = N / 2; i > 0; --i) Heapify(Array - 1, i, N); for (long i = N - 1; i > 0; --i)
Exchange(Array, 0, i); Heapify(Array - 1, 1, i);
template <class Item> void Heapify(Item* Array, long i, long N) { while (i <= N / 2)
long j = 2 * i; if (j + 1 <= N && Array[j + 1] > Array[j]) ++j; if (Array[i] < Array[j]) Exchange(Array, i, j); else break; i = j;
Procedura Insertion Sort to procedura sortowania przez wstawianie: template <class Item> void Insertion_Sort(Item* Array, long N) { for (long i = 1; i < N; ++i)
Item temp = Array[i]; long j; for (j = i; j > 0 && temp < Array[j - 1];