對於我正在上課的課程,最好使用one-pass algorithm
來修復某個任務。由於這個課程不屬於我的專業化(我是建築環境,這個課程是計算機科學),並且在課堂上沒有討論過,所以我還沒有弄清楚單程算法是什麼。谷歌搜索讓我覺得這樣的事情:什麼是單程算法,是我的算法?
每個輸入只能訪問一次,並應按順序處理所有內容。
對於我下面的代碼,這表明對我來說,for loop
將適合在one-pass algorithm
,但我不確定的while loop
。
你能告訴我,最好用外行人的話說,one-pass algorithm
意味着什麼,如果我的代碼符合這個描述?
public int[] computeDepth(int tree[]) {
int[] depth = new int[tree.length];
depth[0] = 0;
for (int index=1; index < tree.length; index++) {
depth[index] = 1;
int parentIndex = tree[index];
while (parentIndex != 0) {
parentIndex = tree[parentIndex];
depth[index]++;
}
}
return depth;
}
可能重複[什麼是單通道算法](https://stackoverflow.com/questions/26322007/what-is-a-single-pass-algorithm) – PrestonM
你讀過[維基百科關於它的文章] (https://en.wikipedia.org/wiki/One-pass_algorithm)?什麼讓你感到困惑? – Michael
我做過了,我也看過帖子說這可能是重複的,但對我來說,這些解釋相當複雜,帶來的混亂比確認更多。我認爲我的代碼是一次性的,但我不確定,因爲while循環。令我困惑的是使用(我猜)專業術語,這是我不熟悉的。 – Timmiej93