(笔记)插入排序

插入排序

插入排序是一种简单且常见的排序算法,它通过重复将一个元素插入到已经排好序的一组元素中,来达到排序的目的。在插入排序算法中,将待排序序列分为已排序和未排序两个部分。初始时,已排序部分只包含一个记录,即待排序序列的第一个记录。然后,逐个将未排序部分的记录插入到已排序部分的适当位置,直到所有记录都插入到已排序部分为止。由于插入排序算法的思路简单,实现也容易,因此它在实际应用中被广泛使用。

代码实现

以下是插入排序的Java代码实现:

public static void insertionSort(int[] arr) {if (arr == null || arr.length <= 1) {return;}int n = arr.length;for (int i = 1; i < n; i++) {int value = arr[i];int j = i - 1;for (; j >= 0; j--) {if (arr[j] > value) {arr[j + 1] = arr[j];} else {break;}}arr[j + 1] = value;}
}

时间复杂度

插入排序的时间复杂度为$O(n^2),其中n为待排序序列的长度。虽然插入排序的时间复杂度比一些高级排序算法要高,但是在实际应用中,插入排序仍然是一种非常实用的算法,因为它对于小规模的数据排序效率非常高。同时,当待排序序列已经有序或基本有序时,插入排序的时间复杂度可以降低到$O(n),这也是插入排序具有优势的地方之一。

使用场景

插入排序适用于待排序序列较短的情况,特别是当待排序序列已经基本有序时,插入排序的效率非常高。在排序小规模数据时,插入排序是一个不错的选择。同时,由于插入排序的实现较为简单,因此适合用作其他排序算法的子过程。除此之外,在一些高级排序算法中,插入排序也被用来对小规模数据进行排序。例如,快速排序算法在排序过程中,当待排序序列的规模小于某个值时,会采用插入排序算法进行排序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/6161.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LiveGBS流媒体平台GB/T28181功能-海康NVR摄像机自带物联网卡摄像头注册GB/T28181国标平台看不到设备的时候如何抓包及排查

海康大华宇视华为等硬件NVR摄像机注册到LiveGBS国标平台看不到设备的时候如何抓包及排查 1、设备注册后查看不到1.1、是否是自带物联网卡的摄像头1.2、关闭萤石云1.3、防火墙排查1.4、端口排查1.5、IP地址排查1.6、设备TCP/IP配置排查1.7、设备多网卡排查1.8、设备接入配置参数…

Docker(四)

文章目录 1. docker其他命令补充2. docker-registry使用3. docker-hub的使用4. 企业级私有仓库harbor4.1 harbor安装4.2 harbor配置https4.3 harbor常见使用4.3.1 harbor新建项目仓库4.3.2 harbor创建用户4.3.3 harbor仓库管理4.3.4 harbor复制管理4.3.5 harbor删除镜像 5. doc…

K8S下如何搭建eureka集群

背景 传统应用上云&#xff0c;基于传统应用需要考虑上云的方案和改造成本&#xff0c;这也是传统应用上云过程中的难点&#xff0c;本篇介绍3台eureka搭建的方案。 方案一 此方案借助了K8S中Service的一些功能。 这种方案是传统方案的简单迁移版本&#xff0c;比较易于理解…

深度学习:tf.keras实现模型搭建、模型训练和预测

在sklearn中&#xff0c;模型都是现成的。tf.Keras是一个神经网络库,我们需要根据数据和标签值构建神经网络。神经网络可以发现特征与标签之间的复杂关系。神经网络是一个高度结构化的图&#xff0c;其中包含一个或多个隐藏层。每个隐藏层都包含一个或多个神经元。神经网络有多…

【微信小程序】使用iView组件库中的icons资源

要在微信小程序中使用iView组件库中的icons资源&#xff0c;需要先下载并引入iView组件库&#xff0c;并按照iView的文档进行配置和使用。 以下是一般的使用步骤&#xff1a; 下载iView组件库的源码或使用npm安装iView。 在小程序项目的app.json文件中添加iView组件库的引入配…

mac端好用的多功能音频软件 AVTouchBar for mac 3.0.7

AVTouchBar是来自触摸栏的视听播放器&#xff0c;将跳动笔记的内容带到触摸栏&#xff0c;触摸栏可显示有趣的音频内容&#xff0c;拥有更多乐趣&#xff0c;以一种有趣的方式播放音乐&#xff0c;该软件支持多种音频播放软件&#xff0c;可在Mac上自动更改音乐~ 音频选择-与内…

Flask Bootstrap 导航条

(43条消息) Flask 导航栏&#xff0c;模版渲染多页面_U盘失踪了的博客-CSDN博客 (43条消息) 学习记录&#xff1a;Bootstrap 导航条示例_bootstrap导航栏案例_U盘失踪了的博客-CSDN博客 1&#xff0c;引用Bootstrap css样式&#xff0c;导航栏页面跳转 2&#xff0c;页面两列…

实验五 分支限界法

实验五 分支限界法 01背包问题的分治限界法的实现 剪枝函数 限界函数 1.实验目的 1、理解分支限界法的剪枝搜索策略&#xff0c;掌握分支限界法的算法框架 2、设计并实现问题&#xff0c;掌握分支限界算法。 2.实验环境 java 3.问题描述 给定n种物品和一背包。物品i的重…

Cesium态势标绘专题-位置点(标绘+编辑)

标绘专题介绍:态势标绘专题介绍_总要学点什么的博客-CSDN博客 入口文件:Cesium态势标绘专题-入口_总要学点什么的博客-CSDN博客 辅助文件:Cesium态势标绘专题-辅助文件_总要学点什么的博客-CSDN博客 本专题没有废话,只有代码,代码中涉及到的引入文件方法,从上面三个链…

企业微信在ios机型无法吊起打开个人信息页接口(openUserProfile)

wx.qy.openUserProfile({type: 1,//1表示该userid是企业成员&#xff0c;2表示该userid是外部联系人userid: "wmEQlEGwAAHxbWYDOK5u3Af13xlYAAAA", //可以是企业成员&#xff0c;也可以是外部联系人success: function(res) {// 回调} });遇到的问题&#xff1a;调用打…

动态规划入门第1课

1、从计数到选择 ---- 递推与DP&#xff08;动态规划&#xff09; 2、从递归到记忆 ---- 子问题与去重复运算 3、动态规划的要点 第1题 网格路1(grid1) 小x住在左下角(0,0)处&#xff0c;小y在右上角(n,n)处。小x需要通过一段网格路才能到小y家。每次&#xff0c;小x可以选…

macOS mysql 8.0 忘记密码

╰─➤ mysql -V mysql Ver 8.0.33 for macos13.3 on arm64 (Homebrew)mysql.server status mysql.server stopskip-grant-tables 启动mysql ─➤ /opt…

云计算和云架构是什么 有什么用途?

云计算是一种基于互联网的计算方式&#xff0c;它通过网络将计算资源(如计算能力、存储、网络带宽等)以服务的形式提供给用户&#xff0c;并允许用户根据需求进行灵活的资源调配和管理。云计算通常分为三个层次&#xff0c;即基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服…

MongoDB常用语句

MongoDB常用语句 使用创建和删除查询条件查询模糊查询分页排序聚合两表连接 插入 使用 展示数据库 show dbs 或 show databases 查看当前在使用的数据库 db展示数据库下所有表 show collections 或 show tables;终端内容过多&#xff0c;用该指令清屏 cls创建和删除 如果…

[SQL挖掘机] - 比较运算符

介绍: 在 sql 中&#xff0c;比较运算符用于比较表达式或值之间的关系&#xff0c;并生成逻辑真&#xff08;true&#xff09;或逻辑假&#xff08;false&#xff09;的结果。比较运算符在 sql 查询中扮演着重要的角色&#xff0c;具有以下作用和地位&#xff1a; 条件筛选&a…

【Matlab】基于径向基神经网络的数据回归预测(Excel可直接替换数据)

【Matlab】基于径向基神经网络的数据回归预测(Excel可直接替换数据) 1.模型原理2.数学公式3.文件结构4.Excel数据5.分块代码6.完整代码7.运行结果1.模型原理 基于径向基神经网络(Radial Basis Function Neural Network,RBFNN)的数据回归预测是一种基于神经网络的回归模型…

【Matlab】基于遗传算法优化 BP 神经网络的时间序列预测(Excel可直接替换数据)

【Matlab】基于遗传算法优化 BP 神经网络的时间序列预测&#xff08;Excel可直接替换数据&#xff09; 1.模型原理2.文件结构3.Excel数据4.分块代码4.1 arithXover.m4.2 delta.m4.3 ga.m4.4 gabpEval.m4.5 initializega.m4.6 maxGenTerm.m4.7 nonUnifMutation.m4.8 normGeomSel…

使用Redis实现双平面部署的最佳实践

引言&#xff1a; 双平面部署是一种常见的系统架构模式&#xff0c;用于提高系统的可靠性和性能。在这种架构中&#xff0c;拥有相同功能的两个平面同时运行&#xff0c;其中一个平面作为主平面处理请求&#xff0c;而另一个平面则作为备份平面。在传统的双平面部署中&#xf…

操作系统笔记、面试八股(三)—— 系统调用与内存管理

文章目录 3. 系统调用3.1 用户态与内核态3.2 系统调用分类3.3 如何从用户态切换到内核态&#xff08;系统调用举例&#xff09; 4. 内存管理4.1 内存管理是做什么的4.1.1 为什么需要虚拟地址空间4.1.2 使用虚拟地址访问内存有什么优势 4.2 常见的内存管理机制4.3 分页管理4.3.1…

Android-WebRTC-实现摄像头显示

EglBase是什么&#xff1f; 它提供了一个接口&#xff0c;用于在Android平台上创建和管理EGL&#xff08;嵌入式系统图形库&#xff09;上下文&#xff0c;以便在WebRTC中进行图像和视频的处理和渲染。 Capturer, Source, Track, Sink分别是什么&#xff1f; Capturer&#xff…