基本思想:在一次遍历中选出本轮中的最大或者最小值,放到最右边,下次遍历时不再遍历最后一个元素。
实现代码
void select_sort(std::vector<int> &arr)
{
for(int i=0; i <arr.size(); i++)
{
int min_index=i, max_index = i;
for(int j=i+1; j < arr.size(); j++)
{
if(arr[min_index] > arr[j])
{
min_index = j;
}
}
if(i != min_index)
{
std::swap(arr[i], arr[min_index]);
}
}
}