time-complexity - HashSet的时间复杂度
问题描述
我正在和朋友讨论使用 mod 函数作为 Hashing 函数的 Hashset 设计。这种实现的时间复杂度似乎是 O(N/K) ,其中 N 是存储在集合中的总项目,k 是桶的总数。该时间复杂度假设所有项目都分布在所有桶中,桶的平均大小为 N/K。
我很困惑,因为我相信时间复杂度应该是 O(N)。由于时间复杂度是最坏情况下的性能。这里最坏的情况可能是所有 N 个项目都进入同一个桶,我们正在寻找的值可能在桶的末尾。请在这里帮助我。
解决方案
你是对的,最坏的情况是所有物品都进入一个桶。物品均匀分布是最好的情况。也就是说,如果 k 保持不变,则 O(N/k) 与 O(N) 相同,因为可以忽略常数。无论如何,我不希望 k 成为查找输入的一部分。如果 k 可以变化,那么它是不同的,但最坏的情况仍然是 O(N)。
推荐阅读
- reactjs - 覆盖材质 UI 样式的问题
- python - Keras batch_dot 执行中的编译错误:
- elasticsearch - 使用休眠搜索和休眠 ORM 特例进行索引映射
- c# - 如何编辑 SOAP 请求正文
- java - 为什么我在运行测试代码时收到此消息(设置 -DfailIfNoTests=false 以忽略此错误。)?
- javascript - 使用 Spring Boot 和 React Router 提供静态文件夹
- reactjs - 更新数组变量的状态
- ios - Peer 删除了 react-native-ble-plx 中的配对信息
- r - 输出循环 Ggplot2 数字到 pdf:下标越界
- python - Python - 将 For Loop 项目作为新行写入 CSV