什么是选择排序?
方法思路:依次找出数组中最大值,与数组下标为0的位置交换位置,依次遍历即可。
代码实现
代码有详解注释,且封装成了一个方法
排序方法体代码
/**
* 针对 int 类型数组实现的选择排序 ,因为操作的是原数组,方法无返回值
*
* @param arr 用户提供 int 数组
*/
private static void selectSort(int[] arr) {
// 第一层循环 全部遍历一遍 结束循环条件,为有效数组元素下标 - 1
for (int i = 0; i < arr.length - 1; i++) {
// 定义计数器
int index = i;
// 以每一轮循环的起始位置初始化为最大值
int maxValue = arr[i];
// 二层循环
for (int j = i; j < arr.length; j++) {
/*
起始位置 maxValue 依次与未排序的元素比较大小,若maxValue < arr[j],则执行循环
此时为从大到小排序,若变为 if (maxValue > arr[j]) 则为从小到大排序
*/
if (maxValue < arr[j]) {
// 将大的数值赋值给maxValue
maxValue = arr[j];
// 记录最大值下标数组
index = j;
}
}
if (index != i) {
// 设置中间值 temp,进行换位操作
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
}
完整代码及运行结果
import java.lang.reflect.Array;
/*
选择排序实现
*/
import java.util.Arrays;
public class Demo12 {
public static void main(String[] args) {
int[] arr = {0, 22, 5, 21, 9, 21, 4, 6, 21, 10};
// 输出展示排序前数组
System.out.println(Arrays.toString(arr));
// 调用 selectSort() 方法对数组排序
selectSort(arr);
// 输出展示排序后数组
System.out.println(Arrays.toString(arr));
}
/**
* 针对 int 类型数组实现的选择排序 ,因为操作的是原数组,方法无返回值
*
* @param arr 用户提供 int 数组
*/
private static void selectSort(int[] arr) {
// 第一层循环 全部遍历一遍 结束循环条件,为有效数组元素下标 - 1
for (int i = 0; i < arr.length - 1; i++) {
// 定义计数器
int index = i;
// 以每一轮循环的起始位置初始化为最大值
int maxValue = arr[i];
// 二层循环
for (int j = i; j < arr.length; j++) {
/*
起始位置 maxValue 依次与未排序的元素比较大小,若maxValue < arr[j],则执行循环
此时为从大到小排序,若变为 if (maxValue > arr[j]) 则为从小到大排序
*/
if (maxValue < arr[j]) {
// 将大的数值赋值给maxValue
maxValue = arr[j];
// 记录最大值下标数组
index = j;
}
}
if (index != i) {
// 设置中间值 temp,进行换位操作
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
}
}