当前位置: 代码迷 >> J2ME >> 请教对int数组排序最快的办法是什么
  详细解决方案

请教对int数组排序最快的办法是什么

热度:8266   发布时间:2013-02-25 21:31:36.0
请问对int数组排序最快的办法是什么?
有一个int [], 元素个数20到30个,元素都是正整数。

我用了Arrays.sort()排序,速度比较慢,有没有更快的办法?

谢谢!

------解决方案--------------------------------------------------------
Arrays.sort()用的是快速排序速度不慢,再说20/30个数能慢到哪去。。
------解决方案--------------------------------------------------------
冒泡也可以啊。这么小的数据量几乎一样快。
------解决方案--------------------------------------------------------
你20~30个的数据量好意思说Array.sort慢.......

Array.sort好像用的时归并吧.最快的之一了.
------解决方案--------------------------------------------------------
就那么几个数据还需要自己写排序,无语。
------解决方案--------------------------------------------------------
Java code
你的数组数据有点少。。看不出多少性能差别。。。一种:// 排序-->小到大    public static void sortArray(int[] targetArr) {        long t = System.currentTimeMillis();        Arrays.sort(targetArr);        System.out.println("执行时间:" + (System.currentTimeMillis() - t) + "毫秒");        System.out.println("排序后结果");        for(int i : targetArr){            System.out.print(i + "  ");        }    }二种:    // 排序-->小到大    public static void sort(int[] targetArr) {        long t = System.currentTimeMillis();        int temp = 0;        for (int i = 0; i < targetArr.length; i++) {            for (int j = i; j < targetArr.length; j++) {                if (targetArr[i] > targetArr[j]) {                    targetArr[i] = targetArr[i] ^ targetArr[j];                    targetArr[j] = targetArr[i] ^ targetArr[j];                    targetArr[i] = targetArr[i] ^ targetArr[j];                }            }        }        System.out.println("执行时间:" + (System.currentTimeMillis() - t) + "毫秒");        System.out.println("排序后结果");        for(int i : targetArr){            System.out.print(i + "  ");        }    }结果 :都是0毫秒。。。差别在微秒级的。。。
------解决方案--------------------------------------------------------
说实在话,这么点数据 有直接插入排序都不会有太大的时间差距的,楼主到底是想要实现什么哦
------解决方案--------------------------------------------------------
Java code
    // 最大数下标    public static void maxFind(int[] targetArr) {        long t = System.currentTimeMillis();        int mymax=0;///最大值        int myloc=0;////下标        for(int i=0;i<targetArr.length;i++){            if(i==0){                mymax=targetArr[0];            }            int temp = targetArr[i];            if(temp > mymax){                mymax = temp;                myloc = i;            }        }        System.out.println("执行时间:" + (System.currentTimeMillis() - t) + "毫秒");        System.out.println("最大数下标 : "+myloc);    }
------解决方案--------------------------------------------------------
速度要看数据的排布和数据量来决定的 ,没有一种绝对的快慢
  相关解决方案