当前位置: 首页 > news >正文

插入排序 Java 实现 + 思路详解

一、核心思想

插入排序把数组分成两部分:左侧已排序区间右侧未排序区间

  1. 默认第 0 个元素天然有序,已排序区间:[0]
  2. 依次取出未排序区间第一个元素(记为待插入元素);
  3. 向前遍历有序区间,比待插入元素大的元素统一向后挪动一位
  4. 找到合适空位,将待插入元素放入;
  5. 循环直到所有元素完成插入。

算法特性(面试重点)

  • 时间复杂度: 最坏 / 平均 \(O(n^2)\);最好情况 (数组已有序) \(O(n)\)
  • 稳定排序
  • 适合小规模数据、接近有序的数据

二、完整代码(升序)

java

运行

public class InsertSort { public static void main(String[] args) { int[] arr = {5, 2, 9, 3, 7, 6, 1}; System.out.println("排序前:"); printArr(arr); insertSort(arr); System.out.println("排序后:"); printArr(arr); } /** * 插入排序 升序 */ public static void insertSort(int[] arr) { int len = arr.length; // i从1开始:arr[0]默认有序,从第二个元素开始处理 for (int i = 1; i < len; i++) { // 当前要插入的元素 int temp = arr[i]; // j指向有序区间末尾 int j = i - 1; // 向前遍历有序区间:大于temp的元素后移 while (j >= 0 && arr[j] > temp) { arr[j + 1] = arr[j]; j--; } // j+1 就是temp插入的位置 arr[j + 1] = temp; } } // 打印数组 public static void printArr(int[] arr) { for (int num : arr) { System.out.print(num + " "); } System.out.println(); } }

三、简单推演示例

数组:[5,2,9,3]

  1. i=1,temp=2 j=0,arr[0]=5>2 → arr[1]=5,j=-1 arr[0]=2 →[2,5,9,3]
  2. i=2,temp=9 arr [1]=5 < 9,不用移动,直接原位放置
  3. i=3,temp=3 j=2:9>3 → arr [3]=9,j=1 j=1:5>3 → arr [2]=5,j=0 j=0:2<3,停止;arr [1]=3 最终:[2,3,5,9]

四、冒泡 / 选择 / 插入 快速区分

  1. 冒泡排序:相邻比较,边比较边交换,大数逐步往后浮
  2. 选择排序:一轮找到最值下标,一轮最多交换 1 次
  3. 插入排序:逐个拿元素,向前找位置、元素后移,插入空位
http://www.jsqmd.com/news/1248047/

相关文章:

  • Qwen3.7 Function Calling实战教程:从零搭建AI智能体(附可直接运行代码)
  • PCDN技术演进与短视频流畅播放的奥秘
  • 儿童口腔健康教育创新实践与科技应用
  • Windows Hello 模组成像科普:抗逆光与抗伪装底层技术原理
  • 【毕业设计】 基于 Django 的二手商品买卖交易系统校园闲置物品流转交易平台设计(源码+文档+远程调试,全bao定制等)
  • 张宗杰与他的合众昌商会:坚守抱团共赢初心,打造数字化时代的创业大家庭
  • AI写作工具对比:千笔与灵感AI的学术应用指南
  • 答辩PPT美化禁忌❌90%同学都在乱改!学术PPT高分美化技巧
  • 企业级分布式中间件‘龙虾‘本地部署指南
  • AI Agent技术架构解析:从LLM到多智能体协作
  • AI写实人像生成技术:挑战与解决方案
  • 2026年四川食品真空袋批发选择指南:为您的生意匹配供应商 - 装修教育财税推荐2026
  • 大模型全链路开发实战:从训练到部署的工程指南
  • 开会录音怎么快速整理?科会通与主流工具功能解析
  • AI人才争夺战下程序员转型指南
  • Grok CLI更新解析:AI编程助手如何重塑开发者工作流
  • AI内容生产全流程质量保障体系构建与实践
  • 大模型微调与RAG技术在Agent中的融合应用:提升业务结果质量的关键路
  • TV应用多线路负载均衡与内容聚合技术解析
  • Dify平台:零代码AI工作流自动化开发实践
  • 050、从Vector到LLVM的SIMD指令生成
  • MSPM0 UART寄存器深度解析:从伪静态配置到中断管理实战
  • 提示工程核心技巧:如何设计高效AI对话提示词
  • 官网发布 2026广州欧米茄售后细则,保养收费表、维修周期、正规网点清单全公开 - 欧米茄售后服务官网
  • 机房温湿度传感器选型与运维实战指南
  • 不止于共享网络:给你的树莓派OpenWrt软路由加上自动认证与网络优化
  • BQ41Z90数据闪存配置详解:从三层安全防御到JEITA充电算法实践
  • 【AI4S】生化环材高可信技术与产业周报(2026-07-15—2026-07-21)
  • 毕业论文调查问卷不会做?✅AI一键生成规范问卷,适配所有专业论文
  • 从真实案例看OPC创业可行性:四个故事和四条铁律