排序算法-插入排序

属性

当插入第i(i>=1)个元素时,前面的array0,array1,...,arrayi-1已经排好序,此时用arrayi的排序码与arrayi1,arrayi-2,...的排序码顺序进行比较,找到插入位置即将arrayi插入,原来位置上的元素顺序后移

直接插入排序的特性总结: 1. 元素集合越接近有序,直接插入排序算法的时间效率越高 2. 时间复杂度:O(N^2) 3. 空间复杂度:O(1),它是一种稳定的排序算法 4. 稳定性:稳定

代码及其注释

java 复制代码
public class InsertSort {
    // 插入排序
    public static void insertSort(int[]arr){
        //首先比较第一个元素和第二个元素之间的大小关系,所以i从1开始
        for(int i=1;i<arr.length;i++){
            //将要进行比较的数放到一个临时变量中,此时就相当于i位置现在是空的
            int tmp=arr[i];
            //遍历i前面的数据,与temp中的数据进行比较
            int j=i-1;
            for(;j>=0;j--){
                //要是i前面的数据比i的数据大,就说明该数据应该在i数据之前,就将该数据向前移
                if(arr[j]>tmp){
                    arr[j+1]=arr[j];
                }
                //i前面的数据比i的数据小了,找到了合适的位置,就退出循环并将i的数据放到当前遍历到的j数据之前
                else {
                    break;
                }
            }
            //这里有特殊情况,当i前面的数据都比i大时,j的取值会一直取到-1,退出循环,此时就需要将i的值放到0的位置
            arr[j+1]=tmp;
        }
    }
}
相关推荐
齐 飞8 小时前
idea中git误操作撤回git reset --hard ‘HEAD@{1}‘
java·git·intellij-idea
你的保护色8 小时前
多AS互联BGP4综合实验设计
java
某不知名網友8 小时前
ROS2进阶:服务通信、自定义SRV接口、参数服务器与基于服务的参数通信详解
java·开发语言·microsoft
Wang's Blog8 小时前
Java 项目实战: 交友项目 - MongoDB 入门:体系结构和命令行操作
java·mongodb·交友
小溪学编程8 小时前
将 Bean 放入 Spring 容器中的方式有哪些?
java·后端·spring
java_nnnn8 小时前
LeetCode刷题滑动窗口(水果成篮+找到字符串中所有字母的异位词)Java
java·开发语言·leetcode
用户3721574261358 小时前
Java 读取、修改和清空 PDF 文档属性(元数据)
java
SL_staff8 小时前
从‘改一行代码等三天’到‘改完即生效’:实施工程师的逻辑引擎避坑手记
java·产品·全栈
小羊没烦恼!9 小时前
异步编程:线程概述及使用
java·开发语言·mysql·算法·c#
hhwyqwqhhwy9 小时前
设备树之 provider 和 consumer
java·linux·前端