public class SelectSort {
/**
* @author JadeXu
* @// TODO: 2020/12/4 选择排序
* @思路
* 每一层找最小值,放在i位,i从0开始递增,最后找到剩两位数时就只要走一层,所以要走(数组的长度-1)层
* 先找最小值,从i开始的每一位数都要和最小值比较,所以要走(数组的长度)层
* 每走一层,minIndex初始化值为每一层的层数-1(即i),因为索引从0开始,所以要-1
* 每次查找时,初始化值为每一层的层数-1(即i),因为索引从0开始,所以要-1,每次判断将最小值的索引保存下来
*每一层找完后,先判断当前层,minIndex是否与该层第一位值索引相等,相等就不进行交换(减少重复的交换)
* 不相等就进行交换
* 最小值和该层第一位交换
*
* 注意:根据需求,改变数据类型就行,这里用int[]举例
*/
//正序
private static int[] sortByAsc(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
int minIndex = i;
for (int j = i; j < arr.length; j++) {
if(arr[j] < arr[minIndex]){
minIndex = j;
}
}
if (minIndex!=i){
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
return arr;
}
//逆序
private static int[] sortByDesc(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
int maxIndex = i;
for (int j = i; j < arr.length; j++) {
if(arr[j] > arr[maxIndex]){
maxIndex = j;
}
}
if (maxIndex!=i){
int temp = arr[i];
arr[i] = arr[maxIndex];
arr[maxIndex] = temp;
}
}
return arr;
}
}
Java之选择排序(正序、逆序)
最新推荐文章于 2023-07-05 15:21:10 发布