Algorithm 伪码的代价常数

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

我了解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 = 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]