選擇排序的執行順序
選擇排序剛開始的時候默認:第一個數為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