選擇排序
選擇排序也屬於內部排序法,是從想要排序的數據中,按指定的規則選出某一個元素,在依據規定交換位置後達到排序的目的
選擇排序的基本思想是:
- 第一次從arr[0]~arr[n-1]中選出最小值,與arr[0]交換位置
- 第二次從arr[1]~arr{n-1}中選出最小值,與arr[1]交換位置
- 第三次從arr[2]~arr[n-1]中選出最小值,與arr[2]交換位置
- 以此類推下去進行交換位置
- 總共通過n-1次交換,最後便得到一個有序序列
選擇排序的思維分析圖:
選擇排序的思路圖解
假如原始的數組爲:101,34,119,1
接下來上代碼
public static void selectSort(int [] arr){
//arr.length - 1是因爲最後一個元素不需要比較,因爲這個元素後面沒有值了
for(int i = 0; i < arr.length - 1; i++){
int minIndex = 0;//最小值的索引
int min = arr[i];//假設當前數組中的值就是最小值
for(int j = 0; j < arr.length ; j++){//循環結束後min就是最小值
if(min > arr[j]){//如果當前最小值比後面元素大,則需要交換元素值
min = arr[j];
minIndex = j;//並記錄元素下標
}
}
//條件不等證明已經進行了數據交換
if(minIdex != i){
arr[minIndex] = arr[i];//將當前元素賦值到剛纔確定的最小元素的索引位置
arr[i] = min;//將最小元素賦值給當前元素
}
}
}
以上就是選擇排序的代碼,主要就是在與每一次循環都是找到最小的值,在放到外層循環的當前元素的位置,如果有數據交換則賦值替換位置,沒有則不換位置,繼續下一次循環