JAVA-选择排序

选择排序的执行顺序

选择排序刚开始的时候默认:第一个数为min(最小值),默认最小值下表是0,通过这两个东西实现的目标是:
每次选择排序都能选出最小的那个值
第一次选择排序:是拿1与后边的数(3\-2\4\5)来比较 比较下来后的结果是min=-2然后最小值的下标改为-2的下标2
注意的是:min 和 minindex是用来交换的
然后第一次选择排序后是:-2 3 1 4 5
第二次选择排序min=3因为i++,然后3与(1、4、5)比较1最小-》通过将1的下标给minindex,然后交换1,3,这样第二小的数
就被选出来了

代码如下

package 排序;

/**
 * @author 邓雪松 (づ ̄ 3 ̄)づ)
 * @create 2021-10-31-16-49
 */
public class 选择排序 {
    public static void main(String[] args) {
        int[] ints = new int[]{-2,3,5,1,2};
        selectSort(ints);
        for(int anInt:ints){
            System.out.print(anInt+" ");
        }
    }
    //选择排序
    public static void selectSort(int[] arr){
        //外层循环是选择排序的次数(arr.length-1)
        for (int i = 0; i < arr.length-1; i++) {
            //默认min和minindex为arr[i]然后与后面的数比较
            int min = arr[i];
            int minindex = i;
            //内层循环就是来用arr[i]和arr[i]后边的数比较
            for(int j=i+1;j<arr.length;j++){
                //如果找到比arr[i]默认小的数的话那么吧最小的那个下标给minindex用来交换
                if(min>arr[j]){
                    min = arr[j];//min就相当于临时存最小值的变量
                    minindex = j;
                }
            }
            //如果i不等于minindex说明:arr[i]不是最小的那个数,不是的话那就交换呗
            if(i!=minindex){
                arr[minindex]=arr[i];//就想但与吧最小的那个值赋值为arr[i]了
                arr[i]=min;//然后将最小值给arr[i]
            }
        }
    }
}

运行结果如下

-2 1 2 3 5 

结束

posted @   ╰(‵□′)╯  阅读(264)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示