C++代码的伪代码 我需要一些帮助把这个伪代码转换成C++代码< /p> RandomizeArray(String: array[]) Integer: max_i = *Upper bound of array* For i = 0 To max_i - 1 // Pick the item for position i in the array. Integer: j = *pseudorandom number between i and max_i inclusive* *Swap the values of array[i] and array[j]* Next i End RandomizeArray

C++代码的伪代码 我需要一些帮助把这个伪代码转换成C++代码< /p> RandomizeArray(String: array[]) Integer: max_i = *Upper bound of array* For i = 0 To max_i - 1 // Pick the item for position i in the array. Integer: j = *pseudorandom number between i and max_i inclusive* *Swap the values of array[i] and array[j]* Next i End RandomizeArray,c++,C++,我试过这个代码,但似乎我做错了什么。还是正确 char RandomizeArray[]; int max_i = 10; for(int i=0; i < max_i; i++) { char temp; temp = RandomizeArray[i]; int j = rand() % max_i + i; RandomizeArray[i] = RandomizeArray[j]; RandomizeArray[j] = temp;

我试过这个代码,但似乎我做错了什么。还是正确

char RandomizeArray[];
int max_i = 10;
for(int i=0; i < max_i; i++)
{
     char temp;
     temp = RandomizeArray[i];
     int j = rand() % max_i + i;
     RandomizeArray[i] = RandomizeArray[j];
     RandomizeArray[j] = temp;
}

我认为这可能是正确的,但我不明白他希望我在数组中为位置I选择项目的部分。

使用标准库函数可以做得更好吗?是的。 至少

temp = RandomizeArray[i];
RandomizeArray[i] = RandomizeArray[j];
RandomizeArray[j] = temp;
全部被替换为

std::swap(RandomizeArray[i], RandomizeArray[j]);
整个过程有点被取代了,但还不完全是。几乎可以肯定的是,政府会采用不同的支持算法,但这完全违背了演习的目的

除非考官是那种要去的人,哦!他认识到了算法,并提出了一个节省时间的替代方案!杰出的杰出的寻找这样的老板。一般来说,为他们工作更有趣

无论如何。。。OP的解决方案是对伪代码的正确解释吗

没有

看看int j=rand%max_i+i;当你继续计算i的值时,计算j的可能值范围

i = 0 : [0 .. max_i] 
i = 1 : [1 .. max_i + 1]
i = 2 : [2 .. max_i + 2]
注意,上界正在移动,违反了伪代码的约定。当i=1时,j可能在随机数范围之外,从那时起,它只会变得更可能

稍微修改一下,int j=rand%max_i-i+i


额外说明:兰德很差劲。A可能是你在这里想要的

从理解伪代码试图表达的内容开始。第一部分你可以假设是函数名,因为它有一个函数的签名,这意味着它是一个标签,后面跟着一个参数列表,而在底部的结束语句给出了它。这里是C++代码:STD::RealthySouffLeRand数组,RealDista+Max;那么我应该改变int j=rand%max_I+I;到std::random\u shuffleRandomArray,RandomArray+max\u i@TayfurGazioglu不,把你贴到std::random_shuffle上的东西都改了。它已经完成了您的代码试图完成的所有操作,只是正确地完成了,而且现在还有比random_shuffle更好的函数,但我把它留作练习。@PaulMcKenzie问题是我需要学习将伪代码转换为任何语言背后的逻辑。这也是一个问答题,我做了这个代码,但我相信这个代码是不正确的。谢谢你,老兄,你太棒了
i = 0 : [0 .. max_i] 
i = 1 : [1 .. max_i]
i = 2 : [2 .. max_i]