1. 程式人生 > >SelectionSort(選擇排序)

SelectionSort(選擇排序)

筆者在剛開始學習選擇排序的時候,遇到將最小的位置交換的時候寫在第二層迴圈,導致最後在自己給定的陣列,有一個無法正常的排除順序,希望以後學習演算法的人,可以以此為鑑吧,吸收前人的經驗吧;

注:筆者將那個地方標識,自己可以輸出測試的看看。我就不把執行的結果粘貼出來。

public class SelectionSort {
    public static void main(String[] args) {
        int arr[]={3,1,2,4,9,6,5,7,8};
         int minIndex=0;
         int temp=0;
        //選擇排序:將最小的和當前迴圈的位置進行較換,並且要記錄當前的位置
        for(int i=0;i<arr.length;i++){
              minIndex=i; //標記當前位置(假設當前位置是最小的下標位置)
                 for(int j=i+1;j<arr.length;j++){
                     if(arr[j]<arr[minIndex]){
                         minIndex=j;
                     }    
                     //為什麼放在這就遍歷的有問題
                    /* temp= arr[i];
                     arr[i]=arr[minIndex];//保證這個位置是最小的
                        arr[minIndex]=temp;*/


                     } 

                 //這兩個地方大家需要注意一下  
                 temp= arr[i];
                 arr[i]=arr[minIndex];//保證這個位置是最小的
                    arr[minIndex]=temp;

        }
        
        
        //遍歷陣列
        for(int array:arr){
            System.out.println("冒泡順序完成:"+array);
        }
    
    }
}