algorithm - 减少简单排序数组的内存开销

标签 algorithm data-structures

我有一个按键值排序的项目数组,通过二分查找检索项目。这些项目的简化版本看起来像这样:

struct Item
{
    uint64_t key;
    uint64_t data;
};

我正在寻找减少 key 开销的方法。键值除了搜索外不用于任何其他用途。假设插入成本不是问题,但检索成本是问题,那么我可以使用哪种替代数据结构来将簿记开销减少到每项少于 64 位?

唯一的另一个“陷阱”是我需要能够检测到 key 不存在于集合中的情况。

最佳答案

一个明显的可能性是将您的 key 视为 8 个单独的字节并从中构建一个 trie。这结合了您的 key 中的通用前缀,因此如果您有(例如)一千个具有相同第一个字节的项目,您只存储第一个字节一次而不是一千次。

关于algorithm - 减少简单排序数组的内存开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5748559/

相关文章:

python - 我需要一个合适的Python数据结构

c - 使用 fgets 将文件中的行读入二进制搜索树

c - 在常规 C 中非法多态属性的方法?

algorithm - 为多个起始位置找到到终点的最短路径

c# - 林奇 : Get list of letters which have matching records

java - 获取近似平方根

java - 为什么归并排序可以比较两个项目两次?

c++ - 如果只能删除叶子,则删除二叉树的方法数

algorithm - 拼图 : Find the order of n persons standing in a line (based on their heights)

mysql - 数据库结构-加入或不加入