C# 塞奇威克快速查找算法

C# 塞奇威克快速查找算法,c#,algorithm,C#,Algorithm,我是算法新手,希望有人能解释为什么Robert Sedgwick在谈到quickfind算法时说: “我还提到,我们中的很多人都会犯错误。我们所犯的错误 可能的做法是把P的ID放在这里,而不是首先挑选出来 价值。你可以考虑它的含义。这是一个 阴险的虫子。” 为什么我们必须用“pid”来代替id[p]?? 他说了什么 下面是一个代码: 公共类QuickFindUF{ 私有int[]id; 公共QuickFindUF(内部N){ id=新的整数[N]; 对于(int i=0;i

我是算法新手,希望有人能解释为什么Robert Sedgwick在谈到quickfind算法时说:

“我还提到,我们中的很多人都会犯错误。我们所犯的错误 可能的做法是把P的ID放在这里,而不是首先挑选出来 价值。你可以考虑它的含义。这是一个 阴险的虫子。”

为什么我们必须用“pid”来代替id[p]?? 他说了什么

下面是一个代码:

公共类QuickFindUF{
私有int[]id;
公共QuickFindUF(内部N){
id=新的整数[N];
对于(int i=0;i
那么,
id[i]
保存的值将根据当前循环迭代进行更改
id[p]
是指索引
p
处的
id
数组中的数字,但在循环中设置
id[i]
的值。因此,在循环执行时,值
id[p]
可能会被覆盖。这就是为什么要在循环之外的
pid
变量中保存该值的副本。为什么不问问你引用的人呢。你认为互联网上随机出现的人有什么资格澄清别人的话?虽然这从来没有阻止过互联网。山姆·阿克斯,因为我依赖于人的权威。我认为他不会回答这个问题。nbokmans,非常感谢:)