简单排序的基本思想是在待排序区间[first,last)中找最小值,将其交换到first位置,然后对区间[first,last)最同样的处理
其中min_first是找到区间[first,last)中最小值的位置,并将它和first位置交换
#include<iostream>
using namespace std;
template<typename Fitr>
void min_first(Fitr first,Fitr last)
{
//前提[first,last)非空
Fitr min=first;Fitr i=first;
for(++i;i!=last;++i)if(*i<*min)min=i;
std::swap(*first,*min);
}
template<typename Fitr>
void select_sort(Fitr first,Fitr last)
{
for(;first!=last;++first)min_first(first,last);
}
int main()
{
int a[6]={9,6,8,1,4,3};
select_sort<int*>(a+0,a+6);
for(int i=0;i<6;i++)
cout<<a[i]<<" ";
return 0;
}
运行结果: