gpt4 book ai didi

arrays - 算法 : Why do I need to reassign an array element to a variable?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:40:55 24 4
gpt4 key购买 nike

这里的算法很新。当教授给出这段代码时,我开始看普林斯顿的算法和数据结构课:

public void  union(int p, int q){

int pid = id[p];
int qid = id[q];

for(int i = 0; i <id.length; i++){
if (id[i] = pid)
id[i] = qid;
}

他说你需要先把id[p]赋值给pid。这是为什么?为什么你不能只使用 id[p]?另外,我开始阅读算法简介并看到了插入排序的实现。我注意到,他们不只是使用 A[j],而是将其分配给“key”。是不是和上面那个原因一样?谢谢!

INSERTION-SORT.A/
1 for j = 2 to A.length
2 key = A[j]
4 i = j - 1
5 while i>0 and A(i) > key{
6 A(i+1) = A(i)
7 i=i-1}
8 A[i+1] = key

最佳答案

您必须将该元素复制到一个临时变量中,因为该值将在算法的后期被覆盖。

考虑您建议的版本:

for(int i = 0; i <id.length; i++){
if (id[i] == id[p]) {
id[i] = id[q];
}
}

i等于 p , 然后 id[p]将被 id[q] 的值覆盖.原文id[p]现在忘记了,算法的其余部分将产生错误的结果。试试吧!

是的,在插入排序中我们需要保存 A[j] 的原始值,原因相同:元素值被覆盖,否则我们将丢失原始值。

关于arrays - 算法 : Why do I need to reassign an array element to a variable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41365641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com