选择排序是从第一个元素开始一次比较后面的元素,如果后面的元素比他小,就替换
假设第一轮 从 0 开始和 20 比较,0 《 20 不懂,继续向后探测,在探测过程中,我们记录下已测得的最小值(minVal)和最小值的下标(minVal_Index)

没有发现比它小的,所以开始从第二个数据,minVal = 20 minVAl_index = 1 向后找, ,
发现后面 2 《 20 将 minVal 置为 2 minValindex = 2 ,继续向后探测
直到最后,也没有比它小的,那么就让 2 和 20 交换
重复以上步骤,直到遍历到数据长度 -1 结束
/*
从小到大
@1 从第 i 个变量开始,记录为最小变量 min,保存其值和下标 minIndex
向后依次比较,如果 某个元素x小于它,就将x 赋值给 min,更新最小值下标,这样一来找到的值就是数组中最小的那个值
本轮循环结束后,将最小值和第一个变量交换
重复 @1
*/
public class SelectSort {
public static void sort(int[] arr){
// 遍历 length -1 次
for (int i = 0;i<arr.length-1;i++){
int min = arr[i]; // 初始每轮最小值
int minIndex = i; // 最小值下标
// 向后找,比最小值小的值
for (int j = i+1;j<arr.length;j++){
// 如果找到,就更新 min 和 minIndex ,
if (min > arr[j]){
// 更新最小值和
min = arr[j];
// 更新最小值的下标
minIndex = j;
}
}
// 如果本轮比较结束,并且 minIndex 还是 初始值 i 就证明没有找到比初始值还小的数据,
// 如果不等于,就证明找到了,执行下面的 if 条件
if (minIndex != i){
// 将最小值进行交换
arr[minIndex] = arr[i];
arr[i] = min;
}
}
}
}
选择排序算法详解与实现
本文详细介绍了选择排序算法的工作原理,通过一个实例展示了如何从数组中找出最小元素并逐步将其放到正确位置,最终实现升序排列。算法过程包括初始化最小值和其下标,然后逐个与后续元素比较,找到更小的元素更新最小值信息,一轮比较结束后交换最小值与当前位置的元素。该过程不断重复,直至完成整个数组的排序。
2779

被折叠的 条评论
为什么被折叠?



