dsi*_*cha 6 language-agnostic optimization performance data-structures
以下是我需要的数据结构的一些约束.看起来没有一个共同的数据结构(我会提到我在下面想到的那些)都很适合这些.任何人都可以建议一个我可能没有想到的吗?
当 N 很小时,以键 + 值作为有效负载的简单数组或单链表非常有效。即使当 N 变大时它不是最好的。
您获得 O(N) 查找时间,这意味着查找需要k * N时间。AO(1) 查找需要恒定的K时间。因此,您可以使用 O(N)获得更好的N < K/k性能。这里k非常小,因此您可以得到有趣的 N 值。请记住,Big O 表示法仅描述大 Ns 的行为,而不是您所追求的。对于小桌子
void *lookup(int key_to_lookup)
{
int n = 0;
while (table_key[n] != key_to_lookup)
n++;
return table_data[n];
}
Run Code Online (Sandbox Code Playgroud)
很难被击败。
对哈希表、平衡树和简单数组/链表进行基准测试,看看它们分别在哪个 N 值时开始变得更好。然后你就会知道哪个更适合你。
我差点忘了:将经常访问的键保留在数组的开头。根据您的描述,这意味着要对其进行排序。
| 归档时间: |
|
| 查看次数: |
966 次 |
| 最近记录: |