日期:2014-05-20  浏览次数:20840 次

请问对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);
    }

------解决方案--------------------
速度要看数据的排布和数据量来决定的 ,没有一种绝对的快慢