Posted on 2008-10-16 15:08
歲月流逝 閱讀(1455)
評論(0) 編輯 收藏 引用
哈希表(散列表)的基本原理:使用一個下標范圍比較大的數組來存儲元素,一般通過設計一個函數(哈希函數,即散列函數),使得每個元素的關鍵字都與一個函數值(即數組下標)相對應,然后用該數組單元來存儲對應元素。
下面介紹用兩道題目介紹一下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;
}