JAVA-選擇排序


選擇排序的執行順序

選擇排序剛開始的時候默認:第一個數為min(最小值),默認最小值下表是0,通過這兩個東西實現的目標是:
每次選擇排序都能選出最小的那個值
第一次選擇排序:是拿1與后邊的數(3\-2\4\5)來比較 比較下來后的結果是min=-2然后最小值的下標改為-2的下標2
注意的是:min 和 minindex是用來交換的
然后第一次選擇排序后是:-2 3 1 4 5
第二次選擇排序min=3因為i++,然后3與(1、4、5)比較1最小-》通過將1的下標給minindex,然后交換1,3,這樣第二小的數
就被選出來了

代碼如下

package 排序;

/**
 * @author 鄧雪松 (づ ̄ 3 ̄)づ)
 * @create 2021-10-31-16-49
 */
public class 選擇排序 {
    public static void main(String[] args) {
        int[] ints = new int[]{-2,3,5,1,2};
        selectSort(ints);
        for(int anInt:ints){
            System.out.print(anInt+" ");
        }
    }
    //選擇排序
    public static void selectSort(int[] arr){
        //外層循環是選擇排序的次數(arr.length-1)
        for (int i = 0; i < arr.length-1; i++) {
            //默認min和minindex為arr[i]然后與后面的數比較
            int min = arr[i];
            int minindex = i;
            //內層循環就是來用arr[i]和arr[i]后邊的數比較
            for(int j=i+1;j<arr.length;j++){
                //如果找到比arr[i]默認小的數的話那么吧最小的那個下標給minindex用來交換
                if(min>arr[j]){
                    min = arr[j];//min就相當於臨時存最小值的變量
                    minindex = j;
                }
            }
            //如果i不等於minindex說明:arr[i]不是最小的那個數,不是的話那就交換唄
            if(i!=minindex){
                arr[minindex]=arr[i];//就想但與吧最小的那個值賦值為arr[i]了
                arr[i]=min;//然后將最小值給arr[i]
            }
        }
    }
}

運行結果如下

-2 1 2 3 5 

結束


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM