質問の降順ソートのプログラムをJavaで作ってみた。

 質問の降順ソートのプログラムをJavaで作ってみました。
 ラッパー型ならあるようですが、直接プリミティブ型の配列を降順ソートするのは普通無理じゃないのかなぁ。(^_^;
 比較関数をオーバーライドする方法もあるようですが、めんどそうなのでパス。(^_^;
 ちなみに、200万個のランダムなデータをソートして速さを比べてみましたが、
 2.360/0.399≒5.91478696741855
で、昇順ソートしてリバースする方法の方がラッパー型に変換して降順ソートして戻す方法より6倍近く速いという結果が出ました。(^_^;

P.S. よろしければ、こちらもご参照下さい。
質問の降順ソートのプログラムをJavaで作ってみた。(2)

●ReverseSort.java

/*
 * ReverseSort.java
 */
 
import java.util.*;
class ReverseSort {
    static void reverseSort1(int[] a) { // 昇順ソートしてリバースする。
        Arrays.sort(a);
        for(int i=0, j=a.length-1; i< j; i++, j--) {
            int t=a[i]; a[i]=a[j]; a[j]=t;
        }
    }
    
    static void reverseSort2(int[] a) { // ラッパー型に変換して降順ソートして戻す。
        Integer[] b = new Integer[a.length];
        
        for(int i=0; i< a.length; i++) b[i]=a[i];   // ボクシング
        Arrays.sort(b, Collections.reverseOrder());
        for(int i=0; i< a.length; i++) a[i]=b[i];   // アンボクシング
    }
    
    public static void main(String[] args) {
        final int[] VALUES = { 31, 41, 59, 26, 53, 58, 97 };
        int[] values = (int[])VALUES.clone();
        
        reverseSort1(values);
        System.out.println(Arrays.toString(values));
        values = (int[])VALUES.clone();
        reverseSort2(values);
        System.out.println(Arrays.toString(values));
    }
}


●実行結果

[97, 59, 58, 53, 41, 31, 26]
[97, 59, 58, 53, 41, 31, 26]

※参考URL
http://stackoverflow.com/questions/1694751/java-array-sort-descending
http://stackoverflow.com/questions/215271/sort-arrays-of-primitive-types-in-descending-order

[ Java ] Arrays クラスを使って配列を降順にソートする方法 - tekboy
Java 入門 | オートボクシング
Android(Java)でプリミティブ型の配列の降順ソートがめんどくさい
Collections.sortでList要素をソートさせる - Java入門
ど素人のJava入門 - 並べ替え(ソート)
降順とは : JavaA2Z - KAB-studio









Javaによるはじめてのアルゴリズム入門

Javaによるはじめてのアルゴリズム入門

Javaによるアルゴリズム事典

Javaによるアルゴリズム事典

明解Javaによるアルゴリズムとデータ構造

明解Javaによるアルゴリズムとデータ構造

定本Javaプログラマのためのアルゴリズムとデータ構造

定本Javaプログラマのためのアルゴリズムとデータ構造