Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 关于Min-Max-Heap-DeleteMin的时间复杂度_Algorithm_Heap_Binary Heap - Fatal编程技术网

Algorithm 关于Min-Max-Heap-DeleteMin的时间复杂度

Algorithm 关于Min-Max-Heap-DeleteMin的时间复杂度,algorithm,heap,binary-heap,Algorithm,Heap,Binary Heap,在下面关于min max heap delete min过程的代码片段的for循环中,为什么last=(*n)/2?这是因为在最坏的情况下,x必须插入到…的孙子的孙子,例如:树高5:min max-min,地板(5/2)=2,因为在最坏的情况下,第一层之后只有两分钟。现在另一个:高度4:min-max,地板(4/2)=2,这次它不起作用。我想也许last=(*n)会起作用,甚至for(I=1;;)也会起作用,因为它只是检查一些不会发生的事情?标题的原因是IIRC最小-最大堆删除的时间复杂度为 O

在下面关于min max heap delete min过程的代码片段的for循环中,为什么
last=(*n)/2
?这是因为在最坏的情况下,x必须插入到…的孙子的孙子,例如:树高5:min max-min,地板(5/2)=2,因为在最坏的情况下,第一层之后只有两分钟。现在另一个:高度4:min-max,地板(4/2)=2,这次它不起作用。我想也许
last=(*n)
会起作用,甚至
for(I=1;;)
也会起作用,因为它只是检查一些不会发生的事情?标题的原因是IIRC最小-最大堆删除的时间复杂度为
O(logn)
但是
(*n)/2
让它看起来像
O(n)

element delete_min(元素堆[],int*n){
int i,last,k,parent;
元件温度,x;
如果(!(*n)){
//检查
}
堆[0]=堆[1];
x=堆[(*n)--];

对于(i=1,last=(*n)/2;i如果在大小
n
的范围内进行线性迭代,则循环执行O(n)次。这里的线性意味着您有一些循环索引,每次通过循环添加常量(通常不一定是1)进行修改:

for(i = 0; i < n; i += c) { /* Loop executes O(n) times */ }

跨站点重复:由于此问题与CS更相关,请从此处删除此问题。@OmG:没有重复,您提供的链接尚未得到回答:)这并不能解决问题。我的意思是它在发布到网站上时被复制了!:)@OmG:没关系,我只是想对人们的评论做出回应并给予反馈。我感谢你努力使这个网站变得更好。但我想解决我的问题。我更喜欢同时做一些事情来节省时间。
for(i = 0; i < n; i += c) { /* Loop executes O(n) times */ }
for(i = 0; i < n; i *= c) { /* Loop executes O(log n) times */ }