原理
从未排序区域选择一个最小值(最大值)放到开始位置(已排序的最后位置或者未排序的开始位置)。
手撕代码
void selectionSort(vector<int> &vec)
{
/*数组长度*/
int len = vec.size();
for(int i = 0;i<len-1;++i)
{
int index = i;//当前未排序开始位置
for(int j = i+1;j<len;j++){
if(vec[j]<vec[index])
{
index = j;
}
}
if(index == i)
continue;
else
{
vec[index] ^= vec[i];
vec[i] ^= vec[index];
vec[index] ^= vec[i];
}
}
}