posts - 7, comments - 13, trackbacks - 0, articles - 37
   :: 首页 :: 新随笔 :: 联系 ::  :: 管理
哈希表(散列表)的基本原理:使用一个下标范围比较大的数组来存储元素,一般通过设计一个函数(哈希函数,即散列函数),使得每个元素的关键字都与一个函数值(即数组下标)相对应,然后用该数组单元来存储对应元素。 下面介绍用两道题目介绍一下hash表的用法: http://192.168.100.16/showproblem.php?pid=1425 题目描述:给你n个整数,请按从大到小的顺序输出其中前m大的数。 Input 每组测试数据有两行,第一行有两个数n,m (0Output 对每组测试数据按从大到小的顺序输出前m大的数。 这个问题我们可以看到数据量很大而且整数处于[-500000,500000]之间,那么我们就可以用一个大的数组进行hash,然后进行统计。 #include "stdio.h" #include "memory.h" int a[1000001]; int main() { int n,m; int tmp; int i; int count; int flag = 0; while(scanf("%d%d",&n,&m)!=EOF) { count = 0; memset(a,0,sizeof(a[0])*1000001); for(i= 0;i=0;i--) { if(a[i]!=0) { if(!flag) { printf("%d",i-500000); flag = 1; } else { printf(" %d",i-500000); } count++; } if(count==m) break; } printf("\n"); } return 0; }

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理