我试图实现的排序使用选择排序随机生成的向量的函数。我正在尝试一种天真的方式,看看我能否正常工作。这里是我的尝试:实施选择排序与载体
void selection_sort(std::vector<int>& v)
{
int pos, min, i;
//std::vector<int>::iterator pos, min, i;
for(pos = v[0]; pos < v[30]; ++pos)
{
min = pos;
for(i = v[pos + 1]; i < v[30]; ++i)
{
if(i < min)
{
min = i;
}
}
if(min != pos)
{
std::swap(v.at(min), v.at(pos));
}
}
}
出于某种原因,但是当我再次显示向量,所有的元素都在以相同的顺序,因为他们原本。我如果我不使用std::swap
正确,或者如果我的选择排序是不正确写入我不知道。我相信答案非常简单,但我看不到它。感谢您的帮助提前。
为什么你有时会使用索引访问,有时'at'? (提示:不要使用后者。) – 2012-02-08 19:57:11