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

重温经典算法——插入排序


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl

在这里插入图片描述

基本原理

插入排序是一种基于元素逐步插入的简单排序算法,其核心思想是将待排序序列分为已排序和未排序两部分,每次从未排序部分取出第一个元素,反向遍历已排序部分,找到合适位置插入。时间复杂度为平均和最差 O(n²),最好 O(n)(已有序时),空间复杂度 O(1),属于原地、稳定排序,适用于小规模数据或部分有序数据的场景。

代码实现

import java.util.Arrays;public class InsertionSort {public static void insertionSort(int[] arr) {int n = arr.length;// 从第二个元素开始遍历(索引1到n-1)for (int i = 1; i < n; i++) { int current = arr[i]; // 当前待插入元素int j = i - 1;        // 已排序部分的末尾索引// 反向遍历已排序部分,找到插入位置while (j >= 0 && arr[j] > current) { arr[j + 1] = arr[j]; // 将大于current的元素后移j--;}arr[j + 1] = current; // 插入当前元素到正确位置}}public static void main(String[] args) {int[] arr = {12, 11, 13, 5, 6};insertionSort(arr);System.out.println("Sorted array: " + Arrays.toString(arr));// 输出:Sorted array: [5, 6, 11, 12, 13]}
}

相关文章:

  • 纤维组织效应偏斜如何影响您的高速设计
  • ST MCU CAN模块--TTCAN模式浅析
  • Windows10下搭建sftp服务器(附:详细搭建过程、CMD连接测试、连接失败问题分析解决等)
  • 【大模型MCP】MCP 深度解析:AI 时代的「USB-C」接口——原理、对比、实战代码与行业落地
  • 【HTML-15】HTML表单:构建交互式网页的基石
  • 防范DDoS攻击,服务器稳定性崩溃的根源与高效防御对策
  • 【Java】线程池的实现原理是怎样的?CPU密集型任务与IO密集型任务的区别?
  • MinVerse 3D触觉鼠标的技术原理与创新解析
  • 从零起步认知微内核操作系统(AGI)
  • 线程安全问题的原因和解决方案
  • pikachu靶场通关笔记08 XSS关卡04-DOM型XSS
  • pikachu靶场通关笔记07 XSS关卡03-存储型XSS
  • GitCode镜像门法律分析:PL协议在中国的司法实践
  • 告别RAG上下文丢失:Late Chunking 与 Contextual Retrieval 深度对比解析
  • 路由器、网关和光猫三种设备有啥区别?
  • 【图像处理基石】立体匹配的经典算法有哪些?
  • HTML实战项目:高考加油和中考加油
  • 《Map 到底适合用哪个?HashMap、TreeMap、LinkedHashMap 对比实战》
  • 笔记思考法
  • Spring AI 之对话记忆(Chat Memory)
  • java学完后可以做网站吗/全球网站访问量排名
  • 男男做暧暧视频网站/seo短视频发布页
  • wordpress新增目录/seo官网优化怎么做
  • 莱芜都市网征婚交友/网络seo软件
  • 学校网站建设与管理/百度收录的网站多久更新一次
  • 个人网站可以做淘宝推广/内容营销是什么意思