直接选择排序的基本思想是将指定排序位置元素与其他数组元素分别对比,如果满足条件就交换元素值。即:每一趟从待排序的数据元素中选出最小(或最大) 的一个元素,顺序地放在已排好序的数列最后,直到全部待排序的数据元素排完。
直接选择排序的交换次数要比冒泡排序少很多,但是排序轮数是一样的。
使用索引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);
}
}
}