首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java double 陣列排序與整數過濾顯示實作

     編輯:Java 程式設計入門

需求背景

對 double[] 進行升序排序,並將整數值(如 5.0)以 int 形式輸出,非整數保留原樣。

冒泡排序實作

public static void orderNum(double[] n) {
    // 冒泡排序:O(n²),教學用;生產請用 Arrays.sort()
    for (int i = 0; i < n.length - 1; i++) {
        for (int j = 0; j < n.length - 1 - i; j++) {
            if (n[j] > n[j + 1]) {
                double tmp = n[j];
                n[j] = n[j + 1];
                n[j + 1] = tmp;
            }
        }
    }

    // 輸出:整數值顯示為 int
    for (double v : n) {
        int intVal = (int) v;
        if (v == intVal) System.out.println(intVal);
        else System.out.println(v);
    }
}

測試與輸出

public static void main(String[] args) {
    double[] arr = {9, 1.2, 5, 3.2, 1.1};
    orderNum(arr);
}

輸出:

1.1
1.2
3.2
5
9

優化與現代寫法

1. 使用 Arrays.sort(JDK 內建雙軸快排,O(n log n))

Arrays.sort(arr);

2. Java 8 Stream 一行式

Arrays.stream(arr)
      .sorted()
      .forEach(v -> System.out.println(v == (int)v ? (int)v : v));

3. 格式化輸出(保留小數位)

DecimalFormat df = new DecimalFormat("#.##");
System.out.println(df.format(v));

注意事項

  • 浮點比較:v == (int)v 適用於精確整數值;若涉及運算誤差,建議 Math.abs(v - Math.round(v)) < 1e-9
  • 原始陣列修改:Arrays.sort 會改變原陣列,若需保留副本請先 clone()
  • 效能:資料量 > 10⁴ 時務必用內建排序或並行排序 Arrays.parallelSort
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved