直接選擇排序的基本思想是将指定排序位置元素與其他數組元素分别對比,如果滿足條件就交換元素值。即:每一趟從待排序的資料元素中選出最小(或最大) 的一個元素,順序地放在已排好序的數列最後,直到全部待排序的資料元素排完。
直接選擇排序的交換次數要比冒泡排序少很多,但是排序輪數是一樣的。
使用索引index标記即可最大(最小)元素即可,下例代碼選擇下标0開始,故内層循環下标j從1開始即可。
public class SelectSort {
public static void selectSort(int[] arr) {
for(int i=0; i<arr.length-1; i++) {
int index=0;
int temp;
for(int j=1;j<arr.length-i;j++) {
if(arr[j] > arr[index]) {
index = j;
}
}
temp = arr[arr.length-1-i];
arr[arr.length-1-i] = arr[index];
arr[index] = temp;
}
}
public static void main(String[] args) {
int arr[] = new int[] {63,4,24,1,3,15};
if(arr.length <= 0) {
System.out.println("請輸入正确數組");
}
else {
selectSort(arr);
}
for(int num:arr) {
System.out.println(num);
}
}
}