相关疑难解决方法(0)

如何在最多进行3N比较时实现std :: make_heap?

我查看了C++ 0x标准,发现要求make_heap不应超过3*N比较.

即堆积无序集合可以在O(N)中完成

   /*  @brief  Construct a heap over a range using comparison functor.
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

来源没有给我任何线索(g ++ 4.4.3)

while(true)+ __parent == 0不是线索,而是对O(N)行为的猜测

template<typename _RandomAccessIterator, typename _Compare>
void
make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
          _Compare __comp)
{

  const _DistanceType __len = __last - __first;
  _DistanceType __parent = (__len - 2) / 2;
  while (true)
    {
      _ValueType __value = _GLIBCXX_MOVE(*(__first + __parent));
      std::__adjust_heap(__first, __parent, __len, _GLIBCXX_MOVE(__value),
                 __comp);
      if (__parent == 0)
        return;
      __parent--;
    }
}
Run Code Online (Sandbox Code Playgroud)

__adjust_heap看起来像一个log N方法:

while ( __secondChild < (__len - 1) …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm big-o stl binary-heap

28
推荐指数
2
解决办法
7914
查看次数

支持提取最小值的队列的最佳时间复杂度是多少?

我遇到了以下非常困难的面试问题:

考虑具有三个操作的队列数据结构:

- Add into the front of list (be careful front of list)

- Delete from Tail of the list (end of the list)

- Extract Min (remove)
Run Code Online (Sandbox Code Playgroud)

此数据结构的最佳实现摊销时间

A) O(1) 的三个操作

B) 三个 O(log n) 的操作

C) 在 O(1) 中添加和删除,在 O(log n) 中提取最小

D) 在 O(log n) 中添加和删除,在 O(n) 中提取最小

面试后我看到(C)是正确答案。为什么会这样?

第一个挑战是比较选项:哪个选项比其他选项更好,我们如何理解最终的正确选项?

algorithm data-structures

22
推荐指数
2
解决办法
1503
查看次数

什么是树的左子,右兄弟代表?你为什么要用它?

许多数据结构使用称为"左子,右兄弟"表示的表示将多路树存储为二叉树.这是什么意思?你为什么要用它?

tree binary-tree data-structures multiway-tree

18
推荐指数
1
解决办法
2万
查看次数

为什么Fibonacci堆称为Fibonacci堆?

斐波那契堆数据结构在其名称中的"黄金分割",但没有在数据结构似乎使用斐波那契数.根据维基百科的文章:

Fibonacci堆的名称来自Fibonacci数字,用于运行时间分析.

Fibonacci堆中如何出现这些Fibonacci数?

math fibonacci data-structures fibonacci-heap

17
推荐指数
2
解决办法
4335
查看次数

关于优先级队列的性能,二进制堆vs二项式堆vs fibonacci堆

有人可以解释一下我应该如何决定是否使用一个或另一个堆实现,在标题中提到的那些?

根据问题,我想要一个答案来指导我选择有关结构性能的实施方案.现在,我正在做一个优先级队列,但我想知道这个案例最合适的实现,但是基本允许我在任何其他情况下选择一个实现...

另外需要考虑的是我这次使用的是haskell,所以,如果你知道任何可以改善这种语言实现的技巧或其他东西,请告诉我!但和以前一样,欢迎使用其他语言的评论!

谢谢!对不起,如果问题太基础,但我根本不熟悉.这是我第一次面临实施一项任务的任务......

再次感谢!

performance haskell fibonacci binary-heap binomial-heap

12
推荐指数
1
解决办法
3585
查看次数