C++ 什么是程序员';s实现优先级队列的默认选择?
是:C++ 什么是程序员';s实现优先级队列的默认选择?,c++,data-structures,heap,priority-queue,C++,Data Structures,Heap,Priority Queue,是: 堆 未分类列表 排序列表 链表 还有其他数据结构吗 其中哪一个是程序员在实现优先级队列时的默认选择/自然选择,以及该特定选择优于另一个的原因是什么?我想说,堆是为了速度 列表具有线性访问时间,而堆O(log(n))访问是可能的(插入/删除),而列表允许O(1)中的deletemin,但对于插入有O(n)我建议实现梯形队列,这是一个O(1)优先级队列 正式定义:在我需要优先级队列的奇怪情况下,只有一小部分优先级,因此我能够通过一系列按优先级索引的“普通”FIFO队列逃脱。pop()方法从
- 堆李>
- 未分类列表李>
- 排序列表李>
- 链表李>
- 还有其他数据结构吗
其中哪一个是程序员在实现优先级队列时的默认选择/自然选择,以及该特定选择优于另一个的原因是什么?我想说,堆是为了速度
列表具有线性访问时间,而堆O(log(n))访问是可能的(插入/删除),而列表允许O(1)中的deletemin,但对于插入有O(n)我建议实现梯形队列,这是一个
O(1)
优先级队列
正式定义:在我需要优先级队列的奇怪情况下,只有一小部分优先级,因此我能够通过一系列按优先级索引的“普通”FIFO队列逃脱。pop()方法从优先级最高的一端迭代数组,寻找非零计数。维基百科的文章回答了这些问题中的大部分:这是一个有趣的问题,但它太主观了,无法在这里回答。通常,除非有理由使用更高级的东西,比如Fibonacci堆或van Emde Boas队列,否则您只需要使用您选择的语言中可用的任何东西。std::priority队列通常使用堆。我要补充的是,堆可以在O(n)中实例化,而排序列表需要在O(nlogn)中实例化他们以15美元的价格出售这篇文章。关于文章价格:你可以通过图书馆或大学网络免费获得。这些钱有没有给作者?