现有的排序方法中,最快的快排的时间复杂度是NlogN,但是,面对数据量差比较小的大量数据来说,往往这样的时间复杂度是不够的,例如学生的成绩,等大规模整数数据,所以利用哈希散列的排序方法,可以用充足的空间复杂度,来换取更快的时间复杂度,(前提是:整数,且数据之间相差不大)
具体思想看代码就能看懂
import java.util.Scanner;
public class HashSort {
public static void main(String[] args) {
int num[] = new int[10];
int hash[] = new int[105];
Scanner cin = new Scanner(System.in);
for(int i = 0;i<5;i++)
{
num[i] = cin.nextInt();
hash[num[i]]++;
}
for(int i=104;i>=0;i--)
for(int j=0;j<hash[i];j++)
{
System.out.print(i+" ");
}
}
}
通过代码我们可以看出,只需要扫一边hash表,有序序列就出来了,但是我们也可以看出如果数据量之间的差过大时例{2,1000000},这样所浪费的空间是很大的,那样Hash排序所应用的空间就比较狭小了。