线性时间的哈希排序

来源:互联网 发布:the zen of python 编辑:程序博客网 时间:2024/05/18 00:00

现有的排序方法中,最快的快排的时间复杂度是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排序所应用的空间就比较狭小了。

0 0