直接插入排序的简单实现

一、过程演示

i 从 1 开始,j 从 i - 1 开始

把 array i 的值记录在 temp 里

当array j 的值大于 temp,将array j 的值赋给 array j + 1,然后 j - -

当 array j 的值小于 temp 时,把temp 的 值 赋给array j + 1,还有一种情况是当j 为 0,

array j + 1 = temp;

然后后续重复这个过程

二、代码实现

java 复制代码
    public static void insertSort(int[] arr) {
        for(int i = 1; i < arr.length; i++) {
            int temp = arr[i];
            int j = i - 1;
            for(; j >= 0; j--) {
                if(arr[j] > temp) {
                    arr[j + 1] = arr[j];
                }else{
                    arr[j + 1] = temp;
                    break;
                }
            }
            arr[j + 1] = temp;
        }
    }

时间复杂度:O(n^2)

空间复杂度: O(1)

稳定性: 稳定的排序

插入排序有一个特点,数据越有序,速度越快

相关推荐
码爸4 小时前
线性回归算法
算法·机器学习·线性回归
Coder-magician4 小时前
《代码随想录》刷题打卡day51:图论-part09(dijistra堆优化,Bellman_ford算法)
算法·图论
Nil2085 小时前
leetcode 763划分字母区间
算法·leetcode·职场和发展
不会就选b5 小时前
算法日常・每日刷题--<动态规划>20
算法·leetcode·动态规划
别动我齐刘海5 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
青少儿编程课堂6 小时前
迪杰斯特拉(Dijkstra)算法:单源最短路与赛场路线规划
c++·python·算法·bfs·信息学竞赛
不会就选b6 小时前
算法日常・每日刷题--<动态规划>19
算法·leetcode·职场和发展
code2cat6 小时前
Java进阶篇之AtomicLongFieldUpdater:把累计额度留在对象字段中
java·cas·并发编程
WeiXin_DZbishe6 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173
java·vue.js·spring boot·后端·python·php·课程设计
泡茶喝茶写代码6 小时前
A股量化数据工程:从 REST 接口到策略信号(第 18 篇):放量缩量异动扫描
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口