質問の降順ソートのプログラムを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
- 作者: 河西朝雄
- 出版社/メーカー: 技術評論社
- 発売日: 2001/06
- メディア: 単行本
- 購入: 2人 クリック: 26回
- この商品を含むブログ (6件) を見る
- 作者: 奥村晴彦,杉浦方紀,津留和生,首藤一幸,土村展之
- 出版社/メーカー: 技術評論社
- 発売日: 2003/05
- メディア: 単行本
- 購入: 2人 クリック: 61回
- この商品を含むブログ (60件) を見る
- 作者: 柴田望洋
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2007/11/07
- メディア: 単行本
- 購入: 5人 クリック: 42回
- この商品を含むブログ (20件) を見る
- 作者: 近藤嘉雪
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2011/01/26
- メディア: 単行本
- 購入: 1人 クリック: 15回
- この商品を含むブログ (5件) を見る