#pragma once namespace JTL // Jack's template library { template <typename T> void List<T>::selection_sort(ListNodePosi(T) p, int n) { ListNodePosi(T) head = p->pred; ListNodePosi(T) tail = p; for (int i = 0; i < n; i++) { tail = tail->succ; } while (1 < n) { ListNodePosi(T) max_p = select_max(head->succ, n); insert_before(tail, remove(max_p)); tail = tail->pred; n--; } } };