实现过程
- 从所有未排序的数中找到一个最小的数
- 将这个数放到已排好序的部分的最后
实现代码
package com.xiaohuowa.select;
import java.util.Arrays;
/**
* @author 小火娃
* @project_name: my_project
* @package_name: com.xiaohuowa.select
*/
public class SelectSort {
public static void main(String[] args) {
int[] arr = new int[]{2,9,4,7,3,3,6,5};
System.out.println("排序前数组:\t\t" + Arrays.toString(arr));
// 最小值
int min = arr[0];
// 临时变量
int temp = 0;
// 存储在一轮排序过程中找到的最小值的下标
int index = 0;
// 外层for用于控制循环次数
for (int i = 0; i < arr.length; i++) {
// 如果 i 已经到了数组最后一个了,就不需要再交换了
if (i == arr.length - 1) {
break;
}
// 每次开始循环最小值都等于未排序的第一个元素
min = arr[i];
// 内层for用于当次排序的比较
for (int j = i; j < arr.length; j++) {
// 如果未排序数组的某个元素小于最小值,就哦修改最小值和记录这个元素的下标
if (arr[j] < min) {
min = arr[j];
index = j;
}
}
// 内层for结束之后将最小值和未排序数组的第一个交换
temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
System.out.println("选择排序后数组:\t" + Arrays.toString(arr));
}
}