哈希查找
来源:互联网 发布:知即墨下载 编辑:程序博客网 时间:2024/05/21 08:37
哈希查找(散列表查找)
步骤:1.确定散列函数及解决冲突的方法
2.根据散列函数建造哈希表
3.进行哈希查找
解决冲突方法:1.开放地址->(1.线性探测 2.线性补偿探测 3.随机探测 4.线性再散列)
2.链表法
---C语言实现
---本次实现散列函数采用除整取余法
---本次实现解决冲突采用链表法
---实现了哈希表的创建 查找
#include <stdio.h>#include <stdlib.h>#include <windows.h>typedef struct hashsraechnode{int value;struct hashsraechnode*pNext;}HashSraechNode;//哈希查找(散列表查找)//散列函数:除整取余 //解决地址冲突:链表法void HashSearch(int arr[],int length,int SearchNum){int StandardNum;//用数组长度当作标准建造散列函数HashSraechNode **Head = NULL;HashSraechNode *Temp = NULL;HashSraechNode *Del = NULL;int count;int IsSearchSucceed;//0:fail 1:successif(arr == NULL || length <= 0)return ;IsSearchSucceed = 0; StandardNum = length;//建造哈希表Head = (HashSraechNode **)malloc(sizeof(HashSraechNode *)*StandardNum);memset(Head,0,sizeof(HashSraechNode*)*StandardNum);for(count = 0;count<length;count++){Temp = (HashSraechNode *)malloc(sizeof(HashSraechNode ));Temp->value = arr[count];Temp->pNext = NULL;if( !Head[ arr[count]%StandardNum ] ){//头添加避免遍历链表Temp->pNext = Head[ arr[count]%StandardNum ];Head[ arr[count]%StandardNum ] = Temp;}else{Head[ arr[count]%StandardNum ] = Temp;}}//哈希查找if( Head[ SearchNum%StandardNum ] ){Temp = Head[ SearchNum%StandardNum ];while(Temp){if(Temp->value == SearchNum){IsSearchSucceed = 1;break;}Temp = Temp->pNext;}}//释放空间for(count = 0;count<length;count++){if(Head[count]){Temp = Del = Head[count];while(Temp){Del = Temp;Temp = Temp->pNext;free(Del);Del = NULL;}}}free(Head);Head = NULL;if(IsSearchSucceed)printf("Search Succeed\n");elseprintf("Search Failed\n");return ;}int main(){int arr[] = {2,6,9,12,23,55,67,99,123};HashSearch(arr,sizeof(arr)/sizeof(arr[0]),6);system("pause");return 0;}
0 0
- 二分查找,分块查找,哈希查找
- 顺序查找,二分查找,哈希查找
- 二分查找、分块查找、哈希查找
- 查找(二):哈希查找和索引查找
- 查找算法之哈希查找
- 查找算法之哈希查找
- 9.6 哈希查找(杂凑查找)
- 查找算法二之哈希查找
- 查找算法之哈希查找
- 查找算法之哈希查找
- 哈希查找(散列查找)
- 哈希查找
- 哈希查找
- 哈希查找
- 哈希查找
- 哈希查找算法
- 哈希查找算法
- 哈希查找
- 重要地址
- 基于ffmpeg的简单音视频编解码的例子
- Array.prototype.slice.call(arguments,1)
- Android Studio常用的插件
- 升级为奶爸感言
- 哈希查找
- 配置SSH公私钥免密码登陆
- 【dp】最大子段和问题及其拓展
- java并发实践--ConcurrentHashMap与CAS
- TCP和UDP协议
- Win64 驱动内核编程-12.回调监控进线程创建和退出
- 数组的reduce方法和redux
- javax.servlet.http.HttpServlet was not found on the Java
- django 快速搭建blog