数据对应用什么比较高效
现在有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;
}