template < class BidirectionalIterator >
void g_insertion_sort (BidirectionalIterator beg, BidirectionalIterator end)
{
BidirectionalIterator I, J, K;
typename BidirectionalIterator::ValueType t;
for (I = beg; I != end; ++I)
{
t = *I;
for (K = I, J = K--; J != beg && t < *K; --J, --K)
*J = *K;
*J = t;
}
}
|
// usage:
TList<int> L;
...
g_insertion_sort(L.Begin(), L.End()); // sorts in increasing order
g_insertion_sort(L.Begin(), L.End(), GreaterThan); // sorts in decreasing order
|