template <class Item> void selection(Item a[],int l,int r){ for(int i=l;i<r;i++){ int min=i; for(int j=i+1;j<r+1;j++){ if( a[j]< a[min]) min=j; } if(a[min]!=a[i]) /* эта проверка делается только в устойчивых реализациях */ exch(a[i],a[min]); } }