算法入门----排序(选择,冒泡,插排)

1.选择排序

每次从第 i 个开始和它右边每一个比较大小,从i+1一直比到第length-1个,排好的放最左侧,所以 i 每次+1,循环length-1次, i 从0 到 length-2

java 复制代码
 /**
     * 选择排序算法
     * @param arr 待排序的整型数组
     */
    //一句话概括: 选择排序 i++~n-1
    //在i~n-1中选出最小的放在i位置上,然后i+1~n-1范围上继续.
    public static void selectionSort(int [] arr){
        if(arr == null || arr.length <2 ){  //null数组,其 length 属性会导致 NullPointerException。
            return;
        }
        int min=0;//最小值索引
        for(int i=0;i<arr.length-1;i++){
            min=i;
            for(int j=i+1;j<arr.length;j++){//选出最小
                if(arr[min]>arr[j]){
                    min=j;
                }
            }
            int temp=arr[min];//交换
            arr[min]=arr[i];
            arr[i]=temp;
        }
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
    }

2.冒泡排序

每次从 i 开始和 i+1比较, i 向右移动,排好的放右边,所以 i+1每次-1,循环length-1次

java 复制代码
//一句话概括: 冒泡排序 i~n--
    //0~i范围上,相邻位置选出较大数,最大值最终来到i位置,然后0~i-1范围上继续
        public static void bubbleSort(int []arr ){
        if(arr ==null || arr.length<2 ){
            return;
        }
        for(int end=arr.length-1;end>0;end--){//length-1~1
            for(int i=0;i<end;i++){
                if(arr[i]>arr[i+1]){
                    int temp=arr[i];
                    arr[i]=arr[i+1];
                    arr[i+1]=temp;
                }
            }
        }
    }

3.插入排序

每次从 j+1(=i) 开始与左侧相邻位置比较, j 左移并与左邻比较 i 次,排好的放左边,循环 length-1次.

java 复制代码
//插入排序一句话,0~i-1范围上已经有序,新来的数从右往左滑倒不再小的位置插入,然后继续
    public static void insertSort (int [] arr){
        if(arr == null || arr.length<2){
            return;
        }
        for(int i=1;i<arr.length;i++){
            for(int j=i-1;j>=0;j--){
                if(arr[j+1]<arr[j]){
                    int t=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=t;
                }
            }
        }
    }
相关推荐
冉冰学姐44 分钟前
基于ssm的技能比赛报名管理系统29817vn0(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
java·数据库·spring·ssm 框架应用
代码雕刻家3 小时前
3.5.Maven-依赖管理-依赖配置&依赖传递
java·maven
!chen3 小时前
MyBatis-plus拓展之字段类型处理器、自动填充和乐观锁
java·tomcat·mybatis
故事和你913 小时前
sdut-程序设计基础Ⅰ-实验五一维数组(8-13)
开发语言·数据结构·c++·算法·蓝桥杯·图论·类和对象
像污秽一样3 小时前
算法与设计与分析-习题4.2
算法·排序算法·深度优先·dfs·bfs
Jin、yz4 小时前
JAVA 八股
java·开发语言
va学弟4 小时前
Java 网络通信编程(6):视频通话
java·服务器·网络·音视频
pjw198809034 小时前
Spring Framework 中文官方文档
java·后端·spring
Storynone4 小时前
【Day20】LeetCode:39. 组合总和,40. 组合总和II,131. 分割回文串
python·算法·leetcode
jgyzl5 小时前
2026.3.11MyBatis-Plus基本使用与思考
java·数据库·mybatis