1.哈希表排序简介
哈希表排序是一种结构简单,而且时间性能十分优异的排序方法,其以空间换取时间,使得其排序时间复杂度为O(n),且稳定。
2.哈希表排序思想
首先,以数组构建哈希表,而后将待排序数组中每个数以自身为键值存入哈希表数组中(即数据记录至哈希表数组中与数据值相对应的位置,如95就将记录至hash[95]的位置上。每遇到一个便在其相应数组位置加一)最后我们就能直接利用哈希表内的数据记录按哈希表顺序输出,即可得到排序完成的数组。
3.哈希表排序代码实现
void hashsort(int* a, int* b, int n)//哈希表排序函数
{
int i,j,k=0;
for (i = 0; i < n; i++)
b[a[i]]++;//哈希表数组中记录了a数组中所有数据出现的次数
for (i = 0; i < 100; i++)
{
for (j = 0; j < b[i]; j++)//将可能出现的重复数据也一一排入a中
a[k++] = i;
}
}
void main()
{
int i;
int a[] = { 5,55,98,45,63,75,12,56,54,44,32 };//测试案例
int hash[100]={0};//以待排序数组数据上限决定
hashsort(a, hash, 11);
for (i = 0; i < 11; i++)
printf("%d\n", a[i]);
}