使用插入排序的实现对向量进行排序时,作为参数传递的数组不会因此而更改。
我之前尝试过此操作,无法找到我的问题,我们将不胜感激。
5 * (1 + 4 * (1 + 3 * (1 + 2 * (1 + 1))))
答案 0 :(得分:3)
除非传递引用,否则将按值复制参数。要修改传入的对象,请改用引用。
传递vector<int> &arr
而不仅仅是vector<int> arr
。请注意&
。
另一种方法是返回已排序的数组并将其分配给旧的未排序数组。
一些提示:
在rand
之前,请致电srand
以使用种子初始化PRNG。从C ++ 11开始,还有<random>
,无论如何你都应该支持。
std::endl
刷新流缓冲区。 '\n'
没有,但具有相同的视觉效果。除非您确实要刷新流缓冲区,否则请使用'\n'
。特别是在循环中,反复冲洗是多余的,效率低下。
为STL数据结构使用适当的大小类型。对于std::vector
,这是std::vector<T>::size_type
a.k.a. std::size_t
。与阵列相同,BTW。而不是int
,请使用std::size_t
。 std::vector::size
也会返回std::size_t
,而不是int
。