1. 程式人生 > 實用技巧 >Java之選擇排序(正序、逆序)

Java之選擇排序(正序、逆序)

public class SelectSort {
    public static void main(String[] args) {
        /**
         * @author JadeXu
         * @// TODO: 2020/12/4  選擇排序
         * @思路
         * 每一層找最小值,放在i位,i從0開始遞增,最後找到剩兩位數時就只要走一層,所以要走(陣列的長度-1)層
         * 先找最小值,從i開始的每一位數都要和最小值比較,所以要走(陣列的長度)層
         * 每走一層,minIndex初始化值為每一層的層數-1(即i),因為索引從0開始,所以要-1
         * 每次查詢時,初始化值為每一層的層數-1(即i),因為索引從0開始,所以要-1,每次判斷將最小值的索引儲存下來
         *每一層找完後,先判斷當前層,minIndex是否與該層第一位值索引相等,相等就不進行交換(減少重複的交換)
         * 不相等就進行交換
         * 最小值和該層第一位交換
         *
         * 注意:根據需求,改變資料型別就行,這裡用int[]舉例
         
*/ } //正序 private static int[] sortByAsc(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { int minIndex = i; for (int j = i; j < arr.length; j++) { if(arr[j] < arr[minIndex]){ minIndex = j; } }
int temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } return arr; } //逆序 private static int[] sortByDesc(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { int maxIndex = i; for (int j = i; j < arr.length; j++) {
if(arr[j] > arr[maxIndex]){ maxIndex = j; } } int temp = arr[i]; arr[i] = arr[maxIndex]; arr[maxIndex] = temp; } return arr; } }