package algorithm;
import cn.hutool.core.lang.Console;
/**
* @author shenwei.
*/
public class SelectionSort {
public static void main(String[] args) {
//定义一个数组
int[] values = {-10, -23, 50, 25, 33, 85, -45, 66, 500, 489};
//输出数组
Console.log("初始数组数据:\t{}\n", (Object) values);
/*
* 迭代当前原始数组
*/
for (int original = 0; original < values.length - 1; original ++) {
//剩余列表中最小值的索引,默认以原始数组的第一个元素为最小值与其他值进行比较
int minIndex = original;
/*
* 寻找比当前下标更小的元素下标
*/
for (int i = original; i < values.length; i++) {
if (values[i] < values[minIndex]) {
//把当前比较后的最小值赋值给minIndex变量
minIndex = i;
}
}
//如果最小索引与当前索引不相等则证明没有交换完毕,需要进行交换值。
if (minIndex != original) {
//以位运算符 不借助第三个变量进行交换
values[original] = values[original] ^ values[minIndex];
values[minIndex] = values[original] ^ values[minIndex];
values[original] = values[original] ^ values[minIndex];
}
Console.log("第{}步的排序结果:\t{}", original + 1, values);
}
}
}
选择排序(Java版)
最新推荐文章于 2024-08-24 22:01:16 发布