一个简单的英文字符串哈希函数

#include <string.h>

typedef unsigned long u_long;

u_long hash_string(const char* s, int len)
{
	u_long h = 0;
	int i = 0;
	if (len < 0)
		len = (s ? (int) strlen(s) : 0);
	while ( i++ < len)
	{
		h = 17 * h + * s++;
	}
	return h;
}

从别处转来的,找不到转载地址了。- -

经过测试,在大容量数组中定位,插入50000个字符串,冲突大部分能控制在2、3个左右,效果还是不错的。

posted @ 2011-07-22 12:33  XuXn  阅读(655)  评论(0编辑  收藏  举报