从未排序的元素中取一个元素(最大或最小),放到第一位,直到元素有序
public static void main(String[] args) {
int[] arr = {12,14,16,15,13,18,11,17,10,3,6,7,2,8,9,20};
selectSort(arr);
System.out.println("排序完成");
}
private static void selectSort(int[] arr) {
//遍历数组
for (int i = 0; i < arr.length; i++) {
//升序
//最小数下标,从第一位开始
/*int minIndex = i;
//遍历,数字小于最小数,替换最小数下标
for (int j = i + 1; j < arr.length; j++) {
if(arr[j] < arr[minIndex]){
//记录最小数下标
minIndex = j;
}
}
//当前下标与最小数下标不一致,替换数据
if(i != minIndex){
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}*/
//降序
//最大数下标,从第一位开始
int maxIndex = i;
//遍历,数字大于最大数,替换最大数下标
for (int j = i + 1; j < arr.length; j++) {
if(arr[j] > arr[maxIndex]){
//记录最大数下标
maxIndex = j;
}
}
//当前下标与最大数下标不一致,替换数据
if(i != maxIndex){
int temp = arr[i];
arr[i] = arr[maxIndex];
arr[maxIndex] = temp;
}
}
}