【发布时间】:2012-02-08 19:16:18
【问题描述】:
我正在尝试实现一个使用选择排序对随机生成的向量进行排序的函数。我正在尝试一种天真的方法,只是为了看看我是否可以让它正常工作。这是我的尝试:
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? (提示:不要使用后者。)
标签: c++ algorithm sorting vector