#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <time.h>
using namespace std;
const int HASH_SIZE = 1000000;
const int HASH_KEY = 17;
int next[HASH_KEY][HASH_SIZE];
int hash[HASH_SIZE];
int origin_nums[HASH_SIZE];
int now = 1;
int comp(const void *a,const void *b)
{
return (*(int*) a - *(int*) b );
}
bool addIntoHash(const int a)
{
int ind = a % HASH_KEY;
int i = 0;
while( next[ind][i] )
{
if ( hash[ next[ind][i] ] == a )
{
return false;
}
i = next[ind][i];
}
next[ind][i] = now;
hash[now] = a;
now++;
return true;
}
int main()
{
srand(time(NULL));
for(int i = 0 ; i < HASH_SIZE ; i++)
{
origin_nums[i] = rand() % 10000;
}
for(int i = 0 ; i < HASH_SIZE ; i++)
{
// addIntoHash(5);
addIntoHash(origin_nums[i]);
}
printf("The hash table is \n");
for(int i = 1 ; i < now ; i++)
{
printf("%d ",hash[i]);
if ( i % 10 == 0 ) printf("\n");
}
printf("\n");
qsort(hash,now,sizeof(int),comp);
printf("After sorting\n");
for(int i = 1 ; i < now ; i++)
{
printf("%d ",hash[i]);
if ( i % 10 == 0 ) printf("\n");
}
return 0;
}
【ACM模板】HASH表(无删除功能,添查)
最新推荐文章于 2022-08-30 11:17:33 发布