读书人

数据对运用什么比较高效

发布时间: 2013-08-09 15:16:24 作者: rapoo

数据对应用什么比较高效
现在有60个汉字,每个汉字对应一个数字。
实现函数 int f(char *p);输入汉字,返回对应的数字。

一开始只想到if else,后来想到用MAP是不是要高效一些,求各位大大指点。

[解决办法]
hash_map
或自己做个 hash表
[解决办法]
就这点数据用啥map,定义一个结构体,然后遍历比较就ok了,不过中文参数是char*不大好把?
[解决办法]
使用数组最高效,直接以汉字编码值为下标来寻找对应的数字,时间复杂度O(1)
[解决办法]
建个数组,按汉字编码大小排好序,用二分法搜索key.时间复杂度O(logN)
[解决办法]
60个汉字而已,看不出孰优孰劣的。


//字符hash成int的code,不做查找
int myhash(char* p, int sz)
{
unsigned int code = 0;
for(int i = 0;i < sz ; ++i)
{
code = (code <<= 8 + p[i]);
}
return code;
}

[解决办法]
哈希啊,不用想了。
[解决办法]
如果只用这几个汉字,直接建个表就行,需要效率,哈希表。

否则用全部汉字的话,汉字自己的编码就是最好的索引,什么表都不需要了。
汉字只有两个字符,直接查表也是飞快的。

[解决办法]
不超过20项,直接用if
多了改用map

读书人网 >C++

热点推荐