【发布时间】:2019-06-25 11:17:44
【问题描述】:
我想用 c 语言编写一个高效的程序,它可以读取文件中的元素并将其放入数组中。我的想法是有一个函数来查找数组中是否存在的每个元素,但是它花费的时间太长而且每个文件都有数百万个元素(重复)。你知道如何在不重复的情况下将这些元素插入到数组中吗?
注意:这些元素是 10 位数字,包含被占用位置的矩阵不是一个选项
【问题讨论】:
-
@AgustinFerrante -- 使用哈希图有同样的问题 -- 不,它没有。如果你有一个整数映射和与整数相关的计数,那么复杂度如何?
-
我知道这是
C,但是std::map或std::unordered_map如何在C++ 中工作?它通过使用键/值对来工作。您的问题更多地与数据结构和理解它们有关。声称 hasmap 或哈希表查找值的速度很慢,您一个接一个地遍历键是完全不正确的。为什么存在哈希表?不是出于好奇,而是出于真正的原因,即快速查找时间。 -
@AgustinFerrante 你对哈希图了解多少?要搜索它,您可以使用散列算法在 O(1) 时间内将输入转换为输出(忽略冲突)。
-
@AgustinFerrante 看来大学也希望你对散列和散列图进行独立研究。
-
是的,我相信我们正在做 OP 的功课。这个问题似乎是为了让学生研究如何减少时间,而不是在这里得到现成的答案。
标签: c