[go语言]避免过度重构
numOfComponents uintitems []uint
set := QuickFindSet{ numOfComponents: n, items: make([]uint, n) }for i, _ := range set.items {
set.items[i] = uint(i)
}return set
return set.numOfComponents
return set.Find(p) == set.Find(q)
return set.items[p]
rootP := set.Find(p)rootQ := set.Find(q)if rootP == rootQ {
return
}for i, _ := range set.items {
if set.items[i] == rootP {
set.items[i] = rootQ
}
}set.numOfComponents--
numOfComponents uintitems []uintsizes []uint
set := QuickUnionSet{ numOfComponents: n, items: make([]uint, n), sizes: make([]uint, n) }for i, _ := range set.items {
set.items[i] = uint(i)set.sizes[i] = uint(1)
}return set
return set.numOfComponents
return set.Find(p) == set.Find(q)
for p != set.items[p] {
p = set.items[p]
}return p
rootP := set.Find(p)rootQ := set.Find(q)if rootP == rootQ {
return
}if set.sizes[rootP] < set.sizes[rootQ] {
set.items[rootP] = rootQset.sizes[rootQ] += set.sizes[rootP]
} else {
set.items[rootQ] = rootPset.sizes[rootP] += set.sizes[rootQ]
}set.numOfComponents--
return set.numOfComponents
return set.Find(p) == set.Find(q)
return set.numOfComponents
return set.Find(p) == set.Find(q)
- 代码非常的混乱以至于很难阅读
- 已有需有或者有潜在的需求需要修改代码
- 这里重复的代码非常少,只有几行代码。代码结构也比较清晰。
- 作为一个和业务逻辑关联不大的基础数据结构,变化的需求很小。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。