動畫學選擇排序

內容介紹

前言

選擇排序的思想

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

選擇排序動畫演示

選擇排序分析

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

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

第一輪交換前圖示:
數組


第一輪交換後圖示:

第二輪交換前圖示:app

第二輪交換後圖示:動畫

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

第五輪交換前圖示:3d


第五輪交換後圖示:

選擇排序代碼編寫

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

public class SelectionSortTest {
    public static void main(String[] args) {
        int[] arr = new int[]{654132};

        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));
        }
    }
}
複製代碼

運行效果以下:orm

1輪比較後: [154632]
2輪比較後: [124635]
3輪比較後: [123645]
4輪比較後: [123465]
5輪比較後: [123456]
複製代碼

總結

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

---------- End ----------


相關文章
相關標籤/搜索