496 0

MASS幸运哈希竞猜游戏系统项目开发查找算法的实现 [推广有奖]

  • 0关注
  • 1粉丝

本科生

34%

还不是VIP/贵宾

-

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

+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[i] = NULLKEY;

return OK;

}

定义哈希函数

/哈希函数/

int Hash(int key)

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

插入操作

/将关键字插入散列表/

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


二维码

扫码加我 拉你入群

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

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

关键词:项目开发 mass mas Success DEFINE

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

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-26 12:02