動畫:一篇文章快速學會選擇排序

內容介紹

選擇排序的思想

第一次從待排序的數據中選出最小的一個元素,存放在序列的起始位置,而後再從剩餘的未排序元素中尋找到最小元素,而後放到已排序的序列的末尾。以此類推,直到所有待排序的數據元素的個數爲零。java

選擇排序動畫演示

選擇排序分析

通常沒有特殊要求排序算法都是升序排序,小的在前,大的在後。 數組由{6, 5, 4, 1, 3, 2}這6個無序元素組成。算法

選擇排序原理:找到這輪的最小值,放到最左邊。編程

第一輪交換前圖示: 數組

第一輪交換後圖示:微信

第二輪交換前圖示: 動畫

第二輪交換後圖示: code

中間第三輪第四輪過程相似,省略。blog

第五輪交換前圖示: 排序

第五輪交換後圖示: io

選擇排序代碼編寫

咱們分析了選擇排序的原理,發現6個元素須要比較5輪,須要經過一個循環來控制,並且比較的輪數是元素的數量-1。每輪又須要在剩下的元素中找出最小值,也須要使用一個循環。所以須要使用嵌套循環來實現。

代碼以下:

public class SelectionSortTest {
    public static void main(String[] args) {
        int[] arr = new int[]{6, 5, 4, 1, 3, 2};

        selectionSort(arr);
    }

    // 第一次從待排序的數據元素中選出最小的一個元素,存放在序列的起始位置,
    // 而後再從剩餘的未排序元素中尋找到最小元素,而後放到已排序的序列的末尾。
    // 以此類推,直到所有待排序的數據元素的個數爲零。選擇排序是不穩定的排序方法。
    // 選擇排序每輪必須遍歷完後面的全部元素才能肯定一個最小值.
    public static void selectionSort(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) { // 外循環控制比較的輪數
            int minIndex = i;
            for (int j = i + 1; j < arr.length; j++) { // 內循環找到最小值
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                }
            }

            int temp = arr[minIndex];
            arr[minIndex] = arr[i];
            arr[i] = temp;
            System.out.println("第" + (i + 1) + "輪比較後: " + Arrays.toString(arr));
        }
    }
}

運行效果以下:

第1輪比較後: [1, 5, 4, 6, 3, 2]
第2輪比較後: [1, 2, 4, 6, 3, 5]
第3輪比較後: [1, 2, 3, 6, 4, 5]
第4輪比較後: [1, 2, 3, 4, 6, 5]
第5輪比較後: [1, 2, 3, 4, 5, 6]

總結

  1. 選擇排序的原理:第一次從待排序的數據中選出最小的一個元素,存放在序列的起始位置,而後再從剩餘的未排序元素中尋找到最小元素,而後放到已排序的序列的末尾。以此類推,直到所有待排序的數據元素的個數爲零。
  2. 選擇排序在寫代碼時須要使用兩個循環:外循環控制比較的輪數,內循環找到最小值

原創文章和動畫製做真心不易,您的點贊就是最大的支持! 想了解更多文章請關注微信公衆號:表哥動畫學編程

相關文章
相關標籤/搜索