Java Arrays類進行基本數據類型的數組的排序

       今天在寫ACM的時候遇到一個要排序的數組操作,剛開始時是自己寫了一個簡單的冒泡排序,但後來纔想起java本身就提供了一個基本數據類型的數組的排序,那就是Arrays中的sort()。Arrays類中的sort()使用的是快速排序法”,但要注意的是隻能用於int[],double[],char[]等基數據類型的數組,Arrays類之只是提供了默認的升序排列,沒有提供相應的降序排列方法

函數原型:

static void sort(int[] a) //對指定的 int 型數組按數字升序進行排序。
static void sort(int[] a, int fromIndex, int toIndex)  //對指定 int 型數組的指定範圍按數字升序進行排序。 

代碼Demo:

題目:V先生有一天工作到很晚,回家的時候要穿過一條長l的筆直的街道,這條街道上有n個路燈。假設這條街起點爲0,終點爲l,第i個路燈座標爲ai。路燈發光能力以正數d來衡量,其中d表示路燈能夠照亮的街道上的點與路燈的最遠距離,所有路燈發光能力相同。爲了讓V先生看清回家的路,路燈必須照亮整條街道,又爲了節省電力希望找到最小的d是多少?

輸入:輸入兩行數據,第一行是兩個整數:路燈數目n (1≤n≤1000),街道長度l (1 ≤l≤109)。第二行有n個整數ai (0 ≤ ai≤ l),表示路燈座標,多個路燈可以在同一個點,也可以安放在終點位置。

輸出:輸出能夠照亮整個街道的最小d,保留兩位小數。

eg:輸入

       7 15

       15 5 3 7 9 14 0

       輸出

       2.50

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
        Scanner cin = new Scanner(System.in);
        while (cin.hasNext()) {
            int n = cin.nextInt();
            int l = cin.nextInt();
            int[] array = new int[n];
            for (int i = 0; i < n; i++) {   //用數組接收路燈位置
                array[i] = cin.nextInt();
            }
            Arrays.sort(array);  //在這裏調用排序
            double d=-1;
            for (int i = 1; i < array.length; i++) {
                if (d < (array[i] - array[i - 1])) {
                    d = array[i] - array[i - 1];
                }
            }
            
            d = d / 2.0f;   //最大路燈距離除2得到d
            if (d < array[0]) {  //如果第一個路燈離起點位置比最大路燈距離遠則d爲起點到第一個路燈的距離
                d = array[0];
            }
            if (d < (l - array[array.length - 1])) {   //如果最後一個路燈離終點位置比最大路燈距離遠則d爲終點到最後一個路燈的距離
                d = l - array[array.length - 1];
            }

            System.out.printf("%.2f",d);  //格式化輸出兩位小數
        }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章