Algorithm 伪码的代价常数
我了解1-4、6和9-10号线的成本来源。但是为什么5号线10号线和7号线6号线的成本是Algorithm 伪码的代价常数,algorithm,constants,pseudocode,Algorithm,Constants,Pseudocode,我了解1-4、6和9-10号线的成本来源。但是为什么5号线10号线和7号线6号线的成本是 Max-Heap-Increase-Key(A[1...n]: array of number, i: 1<= i <= n, key) 1 if key < A[i] 2 then print " " 3 A[i] = key 4 parent = floor(i/2) 5 while i > 1 and A[parent] < A[i] 6 temp
Max-Heap-Increase-Key(A[1...n]: array of number, i: 1<= i <= n, key)
1 if key < A[i]
2 then print " "
3 A[i] = key
4 parent = floor(i/2)
5 while i > 1 and A[parent] < A[i]
6 temp = A[i]
7 A[i] = A[parent]
8 A[parent] = temp
9 i = parent
10 parent = floor(i/2)
Max Heap Increase Key(A[1…n]:数字数组,i:1让我们看看第5行:
while i > 1 and A[parent] < A[i]
根据规则:
- 读取变量:
a
读取两次,i
读取一次,parent
读取一次
- 从数组读取:一次,在右侧
- 写入数组:一次,在左侧
所以总成本是6
如果“使用数组索引定位内存位置”与“读取或写入数组索引”不同,那么“使用数组索引定位内存位置”的含义仍然不确定。也许这应该计算在内,而不是加载变量A
?这会很奇怪,但将其描述为读取/写入数组的单独成本也很奇怪
一般来说,像a
这样的变量持有指向数组的指针,因此访问像a[i]这样的数组
要求加载该指针,然后加载索引变量,然后执行读或写操作。读或写操作使用前两个操作中加载的指针和索引。此分析来自何处?
A[i] = A[parent]