gpt4 book ai didi

c - 哪种搜索算法更好?

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

我有 3 组项目(名称)。第 1 组有大约 2,1k 项,第 2 组 - 大约 7,6k,第 3 组大约有 21k。我需要在这些组中搜索。我需要一个更好的提示。我想要么把所有的都放在一个 bin 树中:

 GTree* t = g_tree_new((GCompareFunc)g_ascii_strcasecmp);
and search like this:
goup = g_tree_lookup(t, (gpointer *)itemName);

或者制作 3 个字符串数组会更有效率吗:

char g1[2300][14];
char g2[8000][14];
char g3[78000][14];

然后像这样搜索(未检查,伪代码):

    int isvalueinarray(char val,  char *g[][14];, int size){
int i;
for (i=0; i < size; i++) {
if (memcmp(val, g[i], strlenth) == 0)
return true;
}
return false;
}
int i group=0;
if (isvalueinarray(itemName, g2, 7800) ) group = 2;
if (isvalueinarray(itemName, g1, 2300) ) group = 1;

或者有更好的解决方案吗?

最佳答案

数学上最快的方法是将所有内容都放在一棵树中并进行 O(logN) 二进制搜索。因为 Log(3N) 比 3 * Log(N) 快。 (N是每个数组的大小)

但是在任何情况下您都不会使用您编写的伪代码进行搜索,您总是在大量数据中进行二进制搜索。您编写的复杂度为 O(N),而二分查找的复杂度为 O(logN)。

关于c - 哪种搜索算法更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21601236/

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