Java排序算法之选择排序代码实例

 更新时间:2023年11月14日 09:08:40   作者:哇哈哈水有点甜  
这篇文章主要介绍了Java排序算法之选择排序代码实例,从数组的第一个元素开始,每次遍历数组找出一个最小值放在最左侧,第二次从第二个元素开始,依次类推,直到起始元素为数组的倒数第二个元素时,直接和最后一个元素比较,较小值放左边,完成排序,需要的朋友可以参考下

Java排序算法之选择排序代码实例

排序原理:从数组的第一个元素开始,每次遍历数组找出一个最小值放在最左侧,第二次从第二个元素开始,依次类推,直到起始元素为数组的倒数第二个元素时,直接和最后一个元素比较,较小值放左边,完成排序

时间复杂度:O(N^2) 空间复杂度:O(1)

在这里插入图片描述

代码实现(java):

public static void main(String[] args) {
    int[] arr = {3,5,1,2,4,8,4};
    selectSort(arr);
    for (int i : arr) {
        System.out.println(i);
    }
}


public static void selectSort(int[] arr){
    //外层循环表示循环次数,一共需要长度-1次
    for (int i = 0; i < arr.length - 1; i++) {
        //定义一个变量表示本次循环中最新元素的下标,初始值为当次循环的第一个元素
        int minIndex =i;
        for (int j = i+1; j < arr.length; j++) {
            //如果有元素的值比下标为minIndex的值还小,将这个元素的下标赋值给minIndex
            if(arr[j]<arr[minIndex]){
                minIndex=j;
            }
        }
        //如果minIndex被修改过,不再是初始值,交换初始值和minIndex为下标的值
        if(minIndex!=i){
            int tmp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex]= tmp;
        }
    }
}

到此这篇关于Java排序算法之选择排序代码实例的文章就介绍到这了,更多相关Java选择排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mybatis Plus中的流式查询案例

    Mybatis Plus中的流式查询案例

    这篇文章主要介绍了Mybatis Plus中的流式查询案例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • JVM类加载之双亲委派机制解读

    JVM类加载之双亲委派机制解读

    这篇文章主要介绍了JVM类加载之双亲委派机制解读,类加载阶段分为加载、连接、初始化三个阶段,而加载阶段需要通过类的全限定名来获取定义了此类的二进制字节流,Java特意把这一步抽出来用类加载器来实现,需要的朋友可以参考下
    2023-12-12
  • Quartz与Spring集成的两种方法示例

    Quartz与Spring集成的两种方法示例

    这篇文章主要为大家介绍了Quartz与Spring集成的两种方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • 完美解决idea无法搜索下载插件的问题

    完美解决idea无法搜索下载插件的问题

    这篇文章主要介绍了完美解决idea无法搜索下载插件的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • 浅谈多线程中的锁的几种用法总结(必看)

    浅谈多线程中的锁的几种用法总结(必看)

    下面小编就为大家带来一篇浅谈多线程中的锁的几种用法总结(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Java并发编程数据库与缓存数据一致性方案解析

    Java并发编程数据库与缓存数据一致性方案解析

    这篇文章主要为大家介绍了Java并发编程中数据库与缓存数据一致性解决方案,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • SpringBoot3+graalvm:整合并打包为可执行文件方式

    SpringBoot3+graalvm:整合并打包为可执行文件方式

    本文介绍了如何在Spring Boot 3中整合GraalVM,并将其打包为可执行文件,适用于Windows和Linux系统,通过安装GraalVM、配置环境变量、下载Visual Studio组件(仅限Windows)以及使用Maven容器(适用于Linux),可以实现高效的打包和运行
    2024-12-12
  • Java如何处理数据成为树状结构

    Java如何处理数据成为树状结构

    这篇文章主要介绍了Java如何处理数据成为树状结构问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Executor拦截器高级教程QueryInterceptor的规范

    Executor拦截器高级教程QueryInterceptor的规范

    今天小编就为大家分享一篇关于Executor拦截器高级教程QueryInterceptor的规范,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • 关于feign接口动态代理源码解析

    关于feign接口动态代理源码解析

    这篇文章主要介绍了关于feign接口动态代理源码解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03

最新评论