662 0

哈希世界杯幸运哈希竞猜游戏系统开发技术分析 [推广有奖]

  • 0关注
  • 1粉丝

本科生

34%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
13.7723
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
730 点
帖子
39
精华
0
在线时间
29 小时
注册时间
2022-6-13
最后登录
2022-7-7

楼主
系統開發KFZ433 发表于 2022-6-21 14:35:08 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

哈希表查找算法的实现

首先定义一个散列表的结构以及一些相关的常数。其中,HashTables是散列表结构。结构当中的elem为一个动态数组。


#define SUCCESS 1

#define UNSUCCESS 0

#define HASHSIZE 12 /*定义哈希表长为数组的长度*/

#define NULLKEY -32768

{

int *elem; /*数组元素存储基址,动态分配数组*/

int count; /*当前数据元素的个数*/

}HashTable;

int m = 0;


初始化哈希表

/*初始化哈希表*/

Status InitHashTable(HashTable *H)

{

int i;

m = HASHSIZE;

H->count = m;

H->elem = (int *)malloc(m*sizeof(int));

for(i = 0;i<m;i )

H->elem = NULLKEY;


return OK;

}


定义哈希函数


/*哈希函数*/

int Hash(int key)

{

return key % m; /*除留取余法*/

}


插入操作


/*将关键字插入散列表*/

void InsertHash(HashTable *H,int key)

int addr = Hash(Key); /*求哈希地址*/

while(H->elem[addr] != NULLKEY) /*如果不为空则冲突*/

addr = (addr 1) % m; /*线性探测*/

H->elem[addr] = key; /*直到有空位后插入关键字*/


查找操作

/*查找*/

Status SearchHash(HashTable H,int key,int *addr)

{

*addr = Hash(key); /*求哈希地址*/

while(H.elem[*addr] != key) /*若不为空,则冲突*/

*addr = (*addr 1) % m; /*线性探测*/

if(H.elem[*addr) == NULLKEY || *addr == Hash(key))

{/*如果循环回到原点*/

return UNSUCCESS; /*则说明关键字不存在*/

}

return SUCCESS;

}

7、总结

1、哈希表就是一种以键值对存储数据的结构。

2、哈希表是一个在空间和时间上做出权衡的经典例子。如果没有内存限制,那么可以

直接将键作为数组的索引。那么所查找的时间复杂度为O(1);如果没有时间限制,那么我们可以使用无序数组并进行顺序查找,这样只需要很少的内存。哈希表使用了适度的时间和空间来在这两个极端之间找到了平衡。只需要调整哈希函数算法即可在时间和空间上做出取舍。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:技术分析 世界杯 Success DEFINE RETURN

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群
GMT+8, 2026-1-27 06:10