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

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


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址: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]}
}
http://www.xdnf.cn/news/9732.html

相关文章:

  • Python进阶【四】:XML和JSON文件处理
  • vue3 导出excel
  • MySQL高可用方案:Keepalived+双主库架构深度解析与实战指南
  • 【笔记】suna部署之获取 Firecrawl API key
  • 安卓添加设备节点权限和selinux访问权限
  • 如何通过数据分析优化项目决策
  • t009-线上代驾管理系统
  • kafka学习笔记(三、消费者Consumer使用教程——使用实例及及核心流程源码讲解)
  • 微服务测试困境?Parasoft SOAtest的自动化、虚拟化与智能分析来袭!
  • WPF-Prism学习笔记之 “导航功能和依赖注入“
  • React 微应用接入:qiankun 深度集成实战
  • 如何在 Ubuntu 24.04 服务器上安装 Apache Solr
  • AugmentFree:解除 AugmentCode 限制的终极方案 如何快速清理vscode和AugmentCode缓存—windows端
  • 安科瑞Acrelcloud-6200系统:智慧路灯安全用电监控平台架构解析
  • 【Linux网络编程】传输层协议TCP,UDP
  • Nginx详解(三):ngx_http_rewrite_module模块核心指令详解
  • A2A Samples: Hello World Agent
  • [Java恶补day9] 438.找到字符串中所有字母异位词
  • JavaSE核心知识点05实践项目(学生管理系统-控制台版)
  • 前向渲染和延迟渲染
  • 利用仿真软件学习一下RC无源滤波和有源滤波电路
  • 【部署】手搓一个dify可用的rerank模型接口服务
  • VSCode Agent 和 Cursor Agent 系统提示词对比
  • There is a chart instance already initialized on the dom. 柱状图初始化时报前面这个错误如何解决?
  • Python异常处理:优雅地应对程序运行时的“意外”
  • 三轴云台之不完全微分PID控制算法篇
  • 可视化数据大屏适配方案之Scale等比缩放
  • java上机测试错题回顾(3)
  • YOLOv11冻结训练+微调策略实战教程(含效果对比分析)
  • 运维三剑客——grep