Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.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
C++ 什么是程序员';s实现优先级队列的默认选择?_C++_Data Structures_Heap_Priority Queue - Fatal编程技术网

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美元的价格出售这篇文章。关于文章价格:你可以通过图书馆或大学网络免费获得。这些钱有没有给作者?