c语言字符串计算哈希值,对字符串进行hash处理用什么方法好???

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

hash算法的意义在于提供了一种快速存取数据的方法,它用一种算法建立键值与真实值之间的对应关系,(每一个真实值只能有一个键值,但是一个键值可以对应多个真实值,即将数据离散化,以方便存取),这样可以快速在数组等数据结构中存取数据。

例如:

//HashTable.h

template

class HashTable

{

public :

HashTable( int count ) ;

void put( T* t ,int key ) ;

T* get( int key ) ;

private :

T** tArray ;

};

//HashTable.cpp

template

class HashTable

{

HashTable::HashTable( int count )

{

tArray = new T*[count] ;

}

void HashTable::put( T* t , int key )

{

this->tArray[ key ] = t ;

}

T* HashTable::get( int key )

{

return this->tArray[ key ] ;

}

}

这样,我们只要知道key值,就可以快速存取T类型的数据,而不用像在链表等数据结构中查找一样,

要找来找去的. 至于key值,一般都是用某种算法(所谓的Hash算法)算出来的.例如:字符串的Hash算法, char* value = "hello";

int key = (((((((27* (int)'h'+27)* (int)'e') + 27) * (int)'l') + 27) * (int)'l'

+27) * 27 ) + (int)'o'

; Hash函数处理流程Hash,一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射,

pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意内容的输入转换成相同长度输出的加密方式.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值