1. 程式人生 > 實用技巧 >java中遠端呼叫介面springboot

java中遠端呼叫介面springboot

技術標籤:選擇排序java排序演算法

Java 選擇排序

這是演算法圖解書裡的演算法解釋和程式碼,最下面還有一個簡單的程式碼

選擇排序的速度雖然沒有快速排序這麼快,但也是一種很靈巧的演算法。如以下程式碼可通過選擇排序實現:將陣列元素按從小到大的順序排列。 我們先編寫一個用於找出陣列中最小元素的方法:

1、首先,我們假定陣列的第一位為最小元素
2、然後,我們從假定最小元素的位置向後遍歷陣列進行比較
3、這樣我們就可以求出目前陣列中最小的值,也就是圖中位於索引4處的0元素
4、然後我們再把現在求出的最小元素和之前假定的最小元素互換位置
5、我們把元素的位置互換之後,再假定陣列的第二個位置也就是之前假定位置的下一位為最小元素

6、然後再重複類似於之前的操作:

  1. 向後遍歷陣列,得出從假定最小元素位置後開始陣列的最小值。
  2. 陣列中假定的最小元素和求出的最小元素互換位置。
  3. 再假定之前假定位置的下一位為最小元素,繼續向後遍歷比較,互換位置。
    這樣我們就可以發現似乎左邊有一個有序的陣列,右邊有一個亂序的陣列,而右邊亂序的陣列一直在丟擲最小元素給左邊有序的陣列吞噬。當右邊的陣列被左邊的陣列吞噬完了,左邊的陣列就成功的進化成了完整版的有序陣列。這樣我們的排序就完成了。

上程式碼

    public static void main(String[] args) {
        // 需要排序的陣列
        int[] arr =
{5, 3, 6, 2, 0}; // 進行選擇排序,並返回一個已經排序好的陣列 selectionSort(arr); // 輸出已經排序好的陣列 System.out.println(Arrays.toString(arr)); } /** * 以最小元素為標誌位 -> 選擇排序(升序) * @param arr 需要排序的陣列 * @return */ private static int[] selectionSort(int[] arr) { // 預設最小值為第一個元素值 int smallest =
arr[0]; // 最小值的索引 int index = 0; // 外層迴圈控制需要比較的次數 for (int i = 0; i < arr.length - 1; i++) { // 遍歷陣列,開始比較 {5, 3, 6, 2, 0} for (int j = i + 1; j < arr.length; j++) { // 判斷當前遍歷的元素是否比最小的元素小,直至求出當前亂序(右邊)陣列中的最小值 if (arr[j] < smallest) { smallest = arr[j]; index = j; } } // 之前假定的最小元素和求出的最小元素互換位置 int temp = arr[i]; arr[i] = smallest; arr[index] = temp; // 假定的最小元素向後移動一位,以便下次比較 smallest = arr[i+1]; index = i+1; } return arr; }

程式碼結果:

在這裡插入圖片描述

簡單的程式碼塊和註釋

    public static void main(String[] args) {
        //選擇排序:每次選出最小的,依次放在前面,反覆
        int[] array = {1, 12, 43, 2, 2, 6, 7, 4, 7, 34, 23, 2, 454, 687987, 4, 5, 5, 6};
        selectionSort(array);
    }

    //選擇排序
    public static void selectionSort(int[] array) {
        for (int i = 0; i < array.length; i++) {
            int min = i; //記錄最小下標值
            for (int j = i + 1; j < array.length; j++) {
                if (array[j] < array[min]) {
                    min = j;
                }
            }
            //互換數字的位置
            int temp = array[min];
            array[min] = array[i];
            array[i] = temp;
        }
        System.out.println(Arrays.toString(array));//把陣列轉化成String打印出來
    }

程式碼結果:
在這裡插入圖片描述