JAVA十大排序中的-(选择排序)

前奏
是相当于一种时间复杂度中的平方阶概念的数组排序算法
思路
思路:
    1:创建2个循环一个外循环是循环长度-1次每循环依次比较出指定索引范围里最小值
    2:获取当前外循环索引对应的值默认最小元素,然后与内循环中的(外循环索引+1)的索引比较 
    3:如果比较成功并本次循环比较结束后将获取到的最小元素和索引与当前外层对应的索引元素交换即可
课外仅供参考
如果与一组8000个数据的数组排序的情况下默认比较次数要31996000次 时间差不多30--70毫秒之间
如果与一组80000个数据的数组排序的情况下 时间差不多2秒到3秒之间
如果与一组800000个数据的数组排序的情况下 时间应该4分钟左右多
图解

在这里插入图片描述

代码 提示:如果将从小到大顺序变成从大到小顺序,改对应的将> 改成<
//选择排序版本5
    public static void selectSortVersion5(int [] sort){
        //创建2个变量一个存储当前最小元素和索引
        int smallValue;
        int smallIndex;
        //创建外循环用作于循环比较次数 总长度-1次数
        for(int index=0;index<sort.length-1;index++){
            //存储当前外循环对应的索引元素
            smallValue=sort[index];
            smallIndex=index;
            //创建内容循环比较出一次索引元素范围内容的最小值
            for(int index2=index+1;index2<sort.length;index2++){
                //判断比较比较出本次循环的最小值
                if(smallValue>sort[index2]){
                    smallValue=sort[index2];
                    smallIndex=index2;
                }
            }
            //将于当前循环元素与smallValue交换值
            sort[smallIndex]=sort[index];
            sort[index]=smallValue;
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值