gpt4 book ai didi

c - 如何实现一套?

转载 作者:太空狗 更新时间:2023-10-29 17:05:16 25 4
gpt4 key购买 nike

我想用 C 实现一个 Set。在创建 SET 时使用链表是否可以,还是我应该使用其他方法?

您通常如何实现自己的集合(如果需要)。

注意:如果我使用链表方法,我的 Set 操作可能会有以下复杂性:

  • 初始化:O(1);
  • 销毁:O(n);
  • 插入:O(n);
  • 删除:O(n);
  • 并集:O(n*m);
  • 交点:O(n*m);
  • 差异:O(n*m);
  • 成员:O(n);
  • 是子集:O(n*m);
  • setisequal: O(n*m);

O(n*m) 似乎有点大,尤其是对于海量数据...有没有办法更有效地实现我的 Set ?

最佳答案

集合通常实现为红黑树(要求元素具有总顺序)或自动调整大小的哈希表(需要哈希函数)。

后者通常是通过将哈希表的大小加倍并在超过特定容量阈值(75% 很好)时重新插入所有元素来实现的。这意味着单个插入操作可以是 O(n),但当分摊到许多操作时,它实际上是 O(1)。

关于c - 如何实现一套?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2537681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com