http://algorithm.myrice.com/algorithm/commonalg/sort/internal_sorting/chapter2.htm

解决方案 »

  1.   

    呵呵,这个我研究过,绝对比书本上的方法都要快,不过只能支持int,恰好你用得上。就是根据你的书组中的最大值生成一个数组,如果最大值太大,要保证有足够内存吆,每读入一个int放到让与它的值相对应的数组下标加一,最后统计结果。我测试过,比快速排序要快N倍,不过要求你的书组的值最大值不能太大。
      

  2.   

    调用java.util.*用里面的Arrays.sort()方法。括号里放数组如:int [] iArray ={13,1,-1,33,-9};
    很好用的,最重要的是不费脑子!:)
      

  3.   

    特别感谢topglory,你的想法很有创意!!! 我一定去试试。
      

  4.   

    java.util.Arrays.sort()就是用的“快速排序”方法另外我说的比快速排序快N倍是错误的,我的算法时间效率应该是N,而快速排序的时间效率我忘了,反正小于N*N,所以不能说比快速排序快N倍。
      

  5.   

    你说的是桶式排序,这种的确在这样的问题中很快,假设最大数是和最小数差很大的情况下
    你需要的桶=(最大数-最小数)将要很多, 你要的空间也就很大,
    这种排序其实是对数据进行分析的结果.
    对这样的问题,
    第一是分析数据的规律, 这样才能对你选择有帮助,
    这种的时间是O(n)
    高级的排序的时间是O(nlogn)
    还有的是O(n2)