一文搞懂数据结构之 选择排序

本文详细介绍了选择排序算法的工作原理,通过一个实例展示了如何从数组中找出最小元素并逐步将其放到正确位置,最终实现升序排列。算法过程包括初始化最小值和其下标,然后逐个与后续元素比较,找到更小的元素更新最小值信息,一轮比较结束后交换最小值与当前位置的元素。该过程不断重复,直至完成整个数组的排序。
摘要由CSDN通过智能技术生成

选择排序是从第一个元素开始一次比较后面的元素,如果后面的元素比他小,就替换

假设第一轮 从 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;
            }
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值