Java之簡單選擇排序算法

1、選擇排序算法概述

    在要排序的一個數組中,選出最小的一個,而後與第一個位置交換;再對剩餘的數組當中選出最小的一個,與當前數組的第一個交換,以此類推,直到最後一個和倒數第二個比較爲止。算法

2、核心代碼

public static void selectSort(int[] arr) {
    // 1.定義最小值的位置
    int pos = 0;
    for (int i = 0; i < arr.length - 1; i++) {
        // 2.緩存當前數組元素
        int temp = arr[i];
        // 3.先給定當前位置,由於多是最小的。
        pos = i;
        // 4.對i位置的元素與i+1位置開始到arr.length位置逐一進行對比,找到最小的值
        for (int j = i + 1; j < arr.length; j++) {
            // 5.j位置的元素與temp元素進行比較
            if (arr[j] < temp) {
                // 6.找到比temp要小的,並標記這個小值得位置
                temp = arr[j];
                pos = j;
            }
        }
        // 7.當前的最小值與i位置的元素交換
        arr[pos] = arr[i];
        arr[i] = temp;
    }
    for (int i : arr) {
        System.out.print(i + ", ");
    }
}

3、分析

例子:int[] arr = {20,8,13,6,12}數組

第一次循環後:找到arr數組最小值6與第一個位置交換,結果:{6,8,13,20,12}緩存

第二次循環後:找到第一次循環後的第一個位置元素即{8,13,20,12}中找到最小值8,獲得{8,13,20,12}第二次循環結束結果:{6,8,13,20,12}spa

第三次循環後:找到第一次和第二次循環的各第一個位置元素即{13,20,12}中找到最小值12,與第一個位置交換獲得{12,20,13}第三次循環結束結果:{6,8,12,20,13}排序

第四次循環後:找到第1、2、三次循環各第一個位置元素即{20,13}中找到最小值13,與第一個位置交換,獲得{13,20},最終結果:{6,8,12,13,20}select

(也就是說,外層循環只須要:arr.length - 1次,就能完成排序)循環

相關文章
相關標籤/搜索