【基础4】插入排序

server/2025/3/6 15:49:59/
核心思想

插入排序是一种基于元素比较的原地算法>排序算法,其核心思想是将数组分为“已排序”和“未排序”两部分,逐个将未排序元素插入到已排序部分的正确位置。

例如扑克牌在理牌的时候,一般会将大小王、2、A、花牌等按大小顺序插入到左边,3、4等小牌会往右边靠,这和插入排序是同一个原理

复杂度

时间复杂度

场景时间复杂度具体说明
最佳情况O(n)数组已完全有序,每次只需比较一次(无需移动元素)
最差情况O(n²)数组完全逆序,每个元素需比较并移动所有已排序元素(如 [5,4,3,2,1]
平均情况O(n²)部分有序数组的插入操作需要约 n²/4 次比较和移动

空间复杂度

O(1):原地算法>排序算法,仅需固定数量的额外空间(如 key 和索引变量 j

代码实现(Java)
//插入排序,升序排序举例
void insertionSort(int[] arr) {int n = arr.length;for (int i = 1; i < n; ++i) {int key = arr[i];int j = i - 1;//不断向左移动,直到找到自己的位置while (j >= 0 && arr[j] > key) {arr[j + 1] = arr[j];j = j - 1;}arr[j + 1] = key;}
}


http://www.ppmy.cn/server/172906.html

相关文章

IP离线库技术解析:实现高效数据处理能力

IP离线库现已成为企业及开发者实现精准数据分析、网络安全防护和业务优化的核心技术工具之一。金融风控、广告针对性投放&#xff0c;构建用户画像&#xff0c;IP归属地查询与IP定位技术的高效应用都需要IP离线库数据。接下来技术原理、应用场景等方面来解析IP离线库的核心价值…

机器人“照镜子”:开启智能新时代

机器人也爱 “照镜子”&#xff1f; 在科技飞速发展的今天&#xff0c;机器人的身影越来越频繁地出现在我们的生活和工作中。它们承担着各种各样的任务&#xff0c;从工业生产线上的精密操作&#xff0c;到家庭中的清洁服务&#xff0c;再到危险环境下的救援工作。然而&#xf…

Spring Boot Gradle 项目中使用 @Slf4j 注解

Spring Boot Gradle 项目中&#xff0c;如果想使用 Slf4j 注解来启用日志记录&#xff0c;首先需要添加 Lombok 和 SLF4J 的依赖。可以通过以下步骤来添加它们&#xff1a; 1. 添加 Lombok 依赖 在 build.gradle 文件中添加以下 Lombok 依赖&#xff1a; dependencies {impl…

5年前问题的答案,如何造统计信息

数据变化有规律的前提下&#xff0c;为了减少收集统计信息耗时或避免错过收集窗口&#xff0c;巧妙的办法是复制统计信息 set lin 120 create table sales_range (salesman_id number(5), salesman_name varchar2(30), sales_amount number(10), sales_date date) partition b…

告别GitHub连不上!一分钟快速访问方案

一、当GitHub抽风时&#xff0c;你是否也这样崩溃过&#xff1f; &#x1f621; npm install卡在node-sass半小时不动&#x1f62d; git clone到90%突然fatal: early EOF&#x1f92c; 改了半天hosts文件&#xff0c;第二天又失效了... 根本原因&#xff1a;传统代理需要复杂…

解决ubuntu文件中文名乱码的问题

1、安装中文支持包language-pack-zh-hans sudo apt install language-pack-zh-hans 2、修改/etc/environment 在文件末追加以下内容 LANG"zh_CN.UTF-8" LANGUAGE"zh_CN:zh:en_US:en" 3、修改/var/lib/locales/supported.d/local&#xff08;如果没有这…

最近我比较闲,开始在线上教C++,以下是我整理的一些讲课内容,供大家参考

以前在编程机构干过兼职&#xff0c;由于我发现这个四五线城市还有乡镇上。 C老师非常少&#xff0c;但是呢&#xff0c;想学的人又不在少数&#xff0c;所以呢&#xff0c;为了让想学的同学有个机会&#xff0c;我打算在网上免费开放一些资源给大家。希望能帮助一些好学的人和…

【大模型基础_毛玉仁】1.3 基于Transformer 的语言模型

【大模型基础_毛玉仁】1.3 基于Transformer 的语言模型 1.3 基于Transformer 的语言模型1.3.1 Transformer1&#xff09;注意力层&#xff08;AttentionLayer&#xff09;2&#xff09;全连接前馈层&#xff08;Fully-connected Feedforwad Layer&#xff09;3&#xff09;层正…