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);
}
}
}