STL中有priority_queue可以实现优先队列。
下面的代码是小堆哦,是从小到大的顺序。
#include <stdio.h>
#define MAX_N 2001
int heap[MAX_N];
int size;
void push(int x) {
int i = size++;
int p;
while (i > 0) {
p = (i - 1) / 2;
if (heap[p] < x) {
break;
}
heap[i] = heap[p];
i = p;
}
heap[i] = x;
}
int pop() {
int res = heap[0];
int x = heap[--size];
int i = 0;
int a, b;
while (i*2 + 1 < size) {
a = i*2 + 1;
b = i*2 + 2;
if (b < size && heap[b] < heap[a]) {
a = b;
}
if (heap[a] >= x) {
break ;
}
heap[i] = heap[a];
i = a;
}
heap[i] = x;
return res;
}
int main() {
int a[] = {8, 4, 3, 5, 6, 7, 9};
int i;
for (i = 0; i < 7; i++) {
push(a[i]);
}
for (i = 0; i < 7; i++) {
printf("%d ", pop());
}
printf("\n");
return 0;
}
分享到:
相关推荐
一. 优先队列的定义 优先队列是0个或多个...二. 实现本优先队列的初始化,查找,插入,删除操作,并且控制其查找,插入,删除操作的算法时间复杂度为O(logn)。采用堆正好能实现该时间复杂度。相关代码实现如下:
NULL 博文链接:https://128kj.iteye.com/blog/1665616
优先队列 优先队列(Priority Queue)是一种数据结构,它类似于常规的队列或栈,但每个元素都有与其关联的“优先级”。在优先队列中,元素的出队顺序是基于...下面是一个简单的基于数组和插入排序的优先队列实现示例:
用C语言实现一个优先队列;压缩文件中包括三个文件:1.HeapQueue.h优先队列源代码,2.main.cpp测试主函数;3.HeapQueue.h使用说明
本资源是求解最小生成树问题的,prim算法,用到了优先队列来提高效率,简化代码。
主要介绍了Python优先队列实现方法,结合实例形式分析了Python优先队列的具体定义与使用方法,具有一定参考借鉴价值,需要的朋友可以参考下
该算法基于Java语言,对算法设计中的优先队列进行了实现,本人能力有限,如有bug请多指教
对数据结构中优先队列的设计,这个仅是参考。
数据结构 基于链表实现的优先队列 Cpp文件
优先队列PriorityQueue,_堆Heap【数据结构和算法入门8】
榛子优先队列Hazelcast 通过 SPI 的优先队列实现还不成熟
利用堆实现的优先队列实质是一棵顺序存储的二叉树!所以具有很好的时间"空间性能!比传统的优先队列具有更广泛的应用前景!可在计算机的各种排队算法中推广应用
本程序主要由堆来实现优先队列的数据结构,主要有优先队列的删除,插入。算法复杂度为logn
堆排序实现优先队列,利用优先队列做了一个小程序,有兴趣看看
优先队列的实现,简单实用,实现一个按ttl时间优先的优先队列
自己实现的哈夫曼树,代码不超过100行,用到了优先队列
数据结构,课程设计优先队列实验报告 用最大堆实现的优先队列
用c写的优先队列算法,本人觉得这个还是很好用的,方便,强力推荐