算法之哈希查找法

哈希查找法,又称散列表,是解决快速查找问题的有效手段。当杂物店商品数量增加,传统查找方法如二分法效率降低。哈希表通过散列函数将商品映射到存储位置,解决冲突问题,实现高效访问。本文将探讨哈希表的冲突解决策略及C语言中的程序设计与调用示例。
摘要由CSDN通过智能技术生成

【算法解释】:哈希查找法又称为散列表

【引入问题】:假设一家杂物店,有顾客来买东西,你得从本子中找到价格。但是随着商品的增加,使用二分法,无法做到顾客想问任何商品的价格,就立即回答。这时候就需要用到哈希表。

【解决冲突】:散列是能一种快速实现访问的存储方式。通常作为检索部分的数据项是整形或者字符串,当是字符串时,字符串的数量要远远大于数组的长度,这时候就会有多个字符串映射到一个存储位置的情况,这就是所谓的冲突问题,而且冲突时肯定存在的,这时候如何实现数据的存储又是需要解决的。

【程序设计】:

/* 	散列表查找算法(hash) */
#define HASHSIZE 7
#define NULLKEY -32768

typedef int Status;
typedef struct
{
	int *elem;	/*	基址 */
	int count;	/*	当前数据元素个数 */
}HashTable;

uint8_t m = 0;  /* 散列表表长 */

/*	初始化 */
Status Init(HashTable *hashTable)
{
	uint8_t i;
	m = HASHSIZE;
	hashTable->elem = (uint8_t *)malloc(m * sizeof(int));
	hashTable->count = m;
	for( i = 0; i < m; i++ )
	{
		hashTable->elem[i] = NULLKEY;
	}
	return TRUE;
}

/*	哈希函数(除留余数法) */
uint8_t Hash(uint8_t data)
{
	return data % m;
}

/*	插入 */
void 
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值