选择排序基本实现

选择排序

请添加图片描述

选择排序思想:

首先遍历数组,每轮遍历将数组内一个最小的一个值放到数组的前面,之后再从剩下的数组内选择一个最小的数放到其次的位置,直到最后两个数比较完。

具体实现思路

  1. 假设数组第一个为最小值,用for循环去遍历数组,如果有比最小值小的数,将其数组下标记下保存在一个变量中。
    为什么是下标?
    因为每一轮遍历之后需要将最小值放到数组前面,方便循环完一遍之后将遍历出的最小值与所放目标位置交换,而不需要在每次找到比最小值小的数时两个交换,用下标只需在遍历完成之后交换一次。

  2. 关于两个for循环的取值与范围:
    外循环:外层控制循环的次数,循环次数从0开始,到数组长度-1结束。在外循环内定义一个存最小值的变量(minNumber)存最小值的下标,将i的值赋给它用于假设要遍历数组的第一个值是最小值。
    内循环:内层循环j=i+1相当于是minNumber后一个数的下标,因为j会随for循环增加,从而往后遍历寻找最小值,当遍历到最后一个时结束,因此范围为:j<数组长度

  3. 拿出每轮最小值下标
    通过在内循环使用if判断,我们j遍历的数组值是否比我们假设的要小,如果是,将这个值的下标给minNumber,此时minNumber的值就变成比之前更小的值的下标。如此往复,直到内循环结束,就能取到最小的那个值的下标。

  4. 两个数组交换位置
    通过上一步之后就可以得到这一轮最小的值的下标,在外循环内将位置交换。

  5. 外循环i++
    外循环++就表示要开始新一轮的查找,而通过上一步操作,已经将上一轮的最小值放到前面。

public class SelectionSort2 {
    public static void main(String[] args) {
        int[] arr ={13,45,74,12,24};
        for (int i = 0;i< arr.length;i++){
            int minNumber=i;
            for (int j = i+1;j< arr.length;j++){
                if (arr[minNumber]>arr[j]){
                    minNumber=j;
                }
            }
            int temp = arr[i];
            arr[i] = arr[minNumber];
            arr[minNumber] = temp;
        }
        for (int num:arr) {
            System.out.println(num);
        }
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值