随机选择并交换向量的两个元素

时间:2017-03-05 15:44:44

标签: arrays vector

所以我接受了测试并收到了我教授的评论,说我的功能效率低下。该函数应该执行以下操作: - 随机选择向量中的2个元素并交换它们的值 - 确保有一个要交换的元素:

我知道有一个通常可以使用的swap()函数,但我的教授说我们不能#include(我们在VS中)。我的问题是如何提高效率。这更多是出于好奇,因为我在测试中表现还不错,但是当我无法解决问题时我无法忍受。

所以这就是我所做的。

void IntegerCollection::SwapTwoElements()
{
    if (MyVector.size() >= 1)
    {
        int i;
        int j;
        int holder1;
        int holder2;
        i = rand() % (MyVector.size());
        j = rand() % (MyVector.size());
        holder1 = MyVector[i];
        holder2 = MyVector[j];
        MyVector[j] = holder1;
        MyVector[i] = holder2;
    }

}

//简单的方法,但我们无法使用swap

std::swap (MyVector[rand() % (MyVector.size())] , MyVector[rand() % (MyVector.size())]);

感谢所有有兴趣的人帮我停止撞墙,试图找出另一种解决方案。

0 个答案:

没有答案