Java基础:整型数组(int[]、Integer[])排序

Windows 10家庭中文版,java version "1.8.0_152",Eclipse Oxygen.1a Release (4.7.1a),

参考链接:

本文是在 抄写 了参考链接中的程序后,发现了一些自己之前不晓得的 基础知识 而写。

原文提供了 int[]数组 的排序(java.util.Arrays类的sort函数)(默认顺序——升序),排序后,使用java.util.Arrays类的binarySearch查找数组中 已存在的元素,并得到其位置。

本来自己是想添加 倒序排序 的功能,可是,Arrays类提供的函数中,没有方法对 int[]数组 进行排序,之前知道的sort函数可以有第二个参数——Comparator参数,可是,此参数仅支持引用类型,而int并非应用类型。无法对 int[]数组 进行倒序排序,那么,就对 Integer[]数组 进行倒序排序。

对 int[]数组 怎么进行倒序排序呢?目前的想法:自己写算法实现,或者,使用Arrays.sort排序后,再使用循环颠倒排序元素。

下面的代码是第一次实现 Integer[]数组 倒序排序的代码:用到了 java.util.Comparator、匿名内部类,,稍候会对其进行改进。

1 import java.util.Arrays; 2 import java.util.Comparator; 3 4 public class SortArray { 5 6 public static void main(String[] args) throws Exception { 7 int array[] = {2, 5, -2, 6, -3, 8, 0, -7, -9, 4}; 8 Arrays.sort(array); 9 10 printArray("数组排序结果为:", array); 11 int index = Arrays.binarySearch(array, 2); 12 System.out.print("元素2在第 " + index + " 个位置"); 13 14 // 倒序排列 15 Integer[] array2 = {2, 5, -2, 6, -3, 8, 0, -7, -9, 4}; 16 Arrays.sort(array2, new Comparator() { 17 18 @Override 19 public int compare(Object o1, Object o2) { 20 Integer e1 = (Integer)o1; 21 Integer e2 = (Integer)o2; 22 23 return e1 > e2?-1:1; 24 } 25 26 }); 27 printArray2("数组排序结果为:", array2); 28 } 29 30 /** 31 * 打印int型数组 32 * @param message 33 * @param array 34 */ 35 private static void printArray(String message, int[] array) { 36 System.out.println(message + ": [length = " + array.length + "]"); 37 for (int i = 0; i < array.length; i++) { 38 if (i != 0) { 39 System.out.print(", "); 40 } 41 System.out.print(array[i]); 42 } 43 System.out.println(); 44 } 45 46 /** 47 * 打印Integer型数组 48 * @param message 49 * @param array 50 */ 51 private static void printArray2(String message, Integer[] array) { 52 System.out.println(message + ": [length = " + array.length + "]"); 53 for (int i = 0; i < array.length; i++) { 54 if (i != 0) { 55 System.out.print(", "); 56 } 57 System.out.print(array[i]); 58 } 59 System.out.println(); 60 } 61 }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwjdpd.html