《算法导论》第六章-优先级队列(伪代码)
2014-10-15 18:03
861 查看
优先级队列
伪代码:
//返回优先级队列的最大值
Heap_Max(A)
return A[1]
end
运行时间为Θ(1)
//去掉并返回优先级队列中的最大值
/*
* 先记录最大值,将数组最后的元素与第一个元素交换,数组大小减一,
* 调用max_heapify函数保证最大堆的性质,最后返回最大值。
*/
Heap_Extract_Max(A, length)
if length < 1 then error "heap under flow"
max = A[1]
A[1] = A[length]
length --
Max_Heapify(A, 1, length)
return max
end
运行时间为Θ(lgn)
//将优先级队列中的i元素的值增加到key(key >= A[i])
Heap_Increase_Key(A, i, key)
if key < A[i] then error
A[i] = key
while i>1 && A[PARENT(i)] <A[i]
do exchange A[i] <-> A[PARENT(i)]
i = PARENT(i)
end
运行时间为Θ(lgn)
//将元素插入优先级队列.
向最大堆中插入新的关键字。新的关键字插入在优先级的队尾部,然后从尾部的父节点开始自底向上调整堆
MAX_HEAP_INSERT(A,key)
heap_size[A] = heap_size[A]+1
A[heap_size[A]] = -0; //把队尾赋值0或无穷小
HEAP_INCREASE_KEY(A,heap_size[A],key)
end
运行时间为Θ(lgn)
详细资料参考:/article/4834192.html
伪代码:
//返回优先级队列的最大值
Heap_Max(A)
return A[1]
end
运行时间为Θ(1)
//去掉并返回优先级队列中的最大值
/*
* 先记录最大值,将数组最后的元素与第一个元素交换,数组大小减一,
* 调用max_heapify函数保证最大堆的性质,最后返回最大值。
*/
Heap_Extract_Max(A, length)
if length < 1 then error "heap under flow"
max = A[1]
A[1] = A[length]
length --
Max_Heapify(A, 1, length)
return max
end
运行时间为Θ(lgn)
//将优先级队列中的i元素的值增加到key(key >= A[i])
Heap_Increase_Key(A, i, key)
if key < A[i] then error
A[i] = key
while i>1 && A[PARENT(i)] <A[i]
do exchange A[i] <-> A[PARENT(i)]
i = PARENT(i)
end
运行时间为Θ(lgn)
//将元素插入优先级队列.
向最大堆中插入新的关键字。新的关键字插入在优先级的队尾部,然后从尾部的父节点开始自底向上调整堆
MAX_HEAP_INSERT(A,key)
heap_size[A] = heap_size[A]+1
A[heap_size[A]] = -0; //把队尾赋值0或无穷小
HEAP_INCREASE_KEY(A,heap_size[A],key)
end
运行时间为Θ(lgn)
详细资料参考:/article/4834192.html
相关文章推荐
- 《算法导论》第六章----优先级队列(代码实现+部分练习)
- 《算法导论》第六章----优先级队列(代码实现+部分练习)
- 《算法导论》第六章之堆和优先级队列相关算法C语言实现
- 算法导论第6章代码之优先级队列
- 算法导论笔记(二) : 优先级队列
- 《算法导论》笔记--优先级队列
- 《算法导论》笔记--优先级队列
- 《算法导论》第6章 堆排序 (2)优先级队列
- 《算法导论》笔记 第6章 6.5优先级队列
- 优先级队列,代码参考范例
- 算法导论-优先级队列
- 《算法导论》学习总结——第二部分2优先级队列
- 算法导论 第六章优先队列C++实现
- 算法导论:堆排序的应用---优先级队列
- 算法导论第六章6.5优先队列课后答案。
- 优先级队列(代码实现+部分练习)
- 《算法导论》第6章 堆排序 (2)优先级队列
- 算法导论Java实现-优先级队列(6.5章节)
- 算法导论例题及课后习题代码实现——第六章
- C++ - "priority_queue" 优先级队列 简介 及 代码