排序1---插入排序

news2025/2/25 21:49:49

目录

插入排序的基本思路:

插入排序的代码实现:

代码:

代码解读:

插入排序的时间、空间复杂度:


 

插入排序的基本思路:

插入排序是一个比较简单的排序。 

我们插入排序就是我们先假设前面的一段区间有序,然后从这个区间的后面一个位置开始,将该位置的值定位待插入的值,待插入的值与该区间的值进行比较,如果区间里面的值大于我们的待插入的值,就将这个值往后移一位,再继续比较,一直到我们比较完最后一个值,或者比较到一个比我们待插入值要小的值,这个时候我们就停止我们的比较。在将我们待插入的值插入比待插入值要小的值的后。

插入排序的代码实现:

代码:

void Insersort(int* a, int n)
{
    int end = 0;
    //假设[0,end]之间是有序的
    for (int j = 0; j < n - 1; j++)//为n-1的原因是防止end+1越界
    {
        end = j;
        int tem = a[end + 1];//待插入的数据
        for (end = j; end >= 0; end--)
        {
            if (a[end] > tem)
            {
                a[end + 1] = a[end];
            }
            else {
                break;//避免极端情况如:当我们的tem 的值最小的时候,我们跳出循环在插入不会越界
            }
        }
        a[end + 1] = tem;
    }

}

代码解读:

在我们代码的时候可以先将单趟排序的思路写出来。再去将我们整个排序的实现。

首先我们要将我们待排序的值用一个变量存下来,因为我们往后面移动的这个行为会直接将后面的值给覆盖,这时我们待插入的值如果没有取出来的就会导致你找不到这个值了。

我们里面的 之后就是将我们待插入的值与区间里面的值进行比较,如果是小于那么与待插入的值往后移一个,否则就跳出循环。这个为什么我们不在里面将我们待插入的值插入进去,是为了当我们这个循环是正常结束的时候就不需要去进行特殊处理,我们都一律在循环外面进行插入。

对于外层循环就是控制我们插入的次数,先假设我们有序的区间里面还没有值,我们从第一个数开始插入,就是从下标为0的地方开始,但是我们的i是小于n-1,为了防止我们的end+1越界。

插入排序的时间、空间复杂度:

时间复杂度:我们插入的时间复杂度是O(N^2),

插入排序最好的情况是O(N),数组有序的情况下。

最坏的情况是O(N^2),逆序的情况下。

空间复杂度是O(1)。

稳定性:我们这里写的是稳定的。因为当其中有一个值与待插入的值相等的情况下我们是跳出内循环,插入再其后面,相对位置保持不变。

插入排序的一个特点:元素集合越接近有序,直接插入排序算法的时间效率越高

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

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

相关文章

【每天学会一个渗透测试工具】AWVS安装及使用指南

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 ✨AWVS介绍 是应用漏洞扫描工具 &#x1f4a6;使用docker安装 docker pull dockermi3aka/awvs启动镜像 docker run -dit …

期货分仓软件的搭建流程

期货分仓软件的搭建流程&#xff0c;是一个涉及多个环节的复杂过程。首先&#xff0c;明确功能需求是至关重要的&#xff0c;这有助于更好地规划软件的开发和设计。接下来&#xff0c;技术选型是关键一步&#xff0c;需要根据开发经验和项目需求&#xff0c;选择适合的编程语言…

webpack处理样式资源04--webpack入门学习

处理样式资源 本章节学习使用 Webpack 如何处理 Css、Less、Sass、Scss、Styl 样式资源 介绍 Webpack 本身是不能识别样式资源的&#xff0c;所以我们需要借助 Loader 来帮助 Webpack 解析样式资源 我们找 Loader 都应该去官方文档中找到对应的 Loader&#xff0c;然后使用…

C# WPF入门学习主线篇(二十二)—— 样式(Styles)的定义和应用

C# WPF入门学习主线篇&#xff08;二十二&#xff09;—— 样式&#xff08;Styles&#xff09;的定义和应用 欢迎来到C# WPF入门学习系列的第二十二篇。本篇文章将详细介绍WPF中的样式&#xff08;Styles&#xff09;的定义和应用。样式在WPF中起到重要作用&#xff0c;通过样…

Hallo技术:革新电影、游戏与虚拟现实中的动态肖像动画

在数字娱乐的浪潮中&#xff0c;逼真的动态肖像动画成为了电影制作、游戏开发和虚拟现实等领域不可或缺的一部分。复旦大学研发的Hallo技术&#xff0c;以其独特的扩散模型和分层音频驱动视觉合成模块&#xff0c;为这一领域带来了革命性的突破。 技术概览 Hallo技术是一种基…

Nvidia芯片Jetson系列 系统烧录环境 搭建

一、序言 Jetson 系列产品烧录系统的方法一般有两种&#xff1a; 一种为使用 NVIDIA 官方提供 的 SDK manager 软件给 Jetson 设备烧录系统&#xff08;请查看说明文档《Jetson 产品使用 SDKmanager 烧录系统》&#xff09;。 另一种即为当前文档所描述的&#xff0c;在安装 Ub…

LVS+Keepalived高可用集群部署

一、高可用群集(HA)的作用 企业应用中&#xff0c;单台服务器承担应用存在单点故障的危险&#xff0c;单点故障一旦发生&#xff0c;企业服务将发生中断&#xff0c;造成极大的危害。 高可用集群是由一台主调度器和一台或多台备用调度器。在主调度器能够正常运转时&#xff0c;…

JVM 相关知识整理

文章目录 前言JVM 相关知识整理1. 新生代和老年代2. 对象的分配过程3. Full GC /Major GC 触发条件4. 逃逸分析4.1.示例4.2. 使用逃逸分析&#xff0c;编译器可以对代码做如下优化 5. 对象的内存分配6. Minor GC 与 Major GC/Full GC的比较:7. 什么对象进入老年代7.1. 大对象直…

【Tello无人机】使用Matlab完成控制器的设计—建模

模型辨识篇 在实际的无人机系统中&#xff0c;控制器的设计至关重要&#xff0c;它直接影响无人机的稳定性和响应能力。然而&#xff0c;要设计出高效、可靠的控制器&#xff0c;首先必须准确理解无人机的动态行为&#xff0c;这就需要通过收集输入输出数据来辨识其运动学模型。…

LabVIEW与Matlab联合编程的途径及比较

​ LabVIEW和Matlab联合编程可以通过多种途径实现&#xff0c;包括调用Matlab脚本节点、使用LabVIEW MathScript RT模块、利用ActiveX和COM接口&#xff0c;以及通过文件读写实现数据交换。每种方法都有其独特的优势和适用场景。本文将详细比较这些方法&#xff0c;帮助开发者…

【Kubernetes】集群学习

常见的 Kubernetes 集群类型 Kubernetes 集群可以根据不同的标准进行分类&#xff0c;但通常我们根据其部署环境和用途来区分集群类型。以下是几种常见的 Kubernetes 集群类型&#xff1a; 开发集群&#xff08;Development Cluster&#xff09;&#xff1a; 用于开发和测试环…

RAG优化技巧|7大挑战与解決方式|提高你的LLM能力

在当今快速发展的人工智能领域&#xff0c;大型语言模型&#xff08;LLM&#xff09;已经成为无处不在的技术&#xff0c;它们不仅改变了我们与机器交流的方式&#xff0c;还在各行各业中发挥着革命性的影响。 然而&#xff0c;尽管LLM RAG的能力已经让人惊叹&#xff0c;但我…

分享一下,如何搭建个人网站的步骤

在这段充满探索与创造的奇妙旅途中&#xff0c;我就像一位耐心的建筑师&#xff0c;在数字世界的荒原上精心雕琢&#xff0c;两周的时光缓缓流淌。每天&#xff0c;我与代码共舞&#xff0c;手执HTML、CSS与JavaScript这三大构建魔杖&#xff0c;一砖一瓦地筑起了梦想中的网络城…

string类(C++)

文章目录 一.引言二.string类&#xff1a;成员函数&#xff1a;构造函数&#xff1a;析构函数 遍历&#xff1a;operator[]迭代器&#xff08;iterator&#xff09;范围for反向遍历(反向迭代器reverse_iterator)const迭代器 容器&#xff1a;capacity扩容clear清数据shrink_to_…

Azure数据分析Power BI

Azure数据分析Power BI 一、Power BI简介二、Power BI 如何匹配角色三、Power BI 构建基块四、使用 Power BI 服务一、Power BI简介 Microsoft Power BI 是一系列的软件服务、应用和连接器,这些软件服务、应用和连接器协同工作,将不相关的数据源转化为合乎逻辑、视觉上逼真的…

Web渗透:XSS-反射型存储型

跨站脚本攻击&#xff08;Cross-Site Scripting&#xff0c;XSS&#xff09;是一种常见的网络安全漏洞&#xff0c;它允许攻击者将恶意脚本注入到网页中&#xff0c;其他用户在浏览这些页面时&#xff0c;可能会执行这些恶意脚本&#xff0c;从而导致各种安全问题&#xff0c;如…

关于STM32上用HID HOST调鼠标数据的解析

一、前言 关于这章主要是基于我前面的那篇文章 链接: 关于怎么用Cubemx生成的USBHID设备实现读取一体的鼠标键盘设备&#xff08;改进版&#xff09; https://blog.csdn.net/qq_29187987/article/details/139535648?spm1001.2014.3001.5501 引用的文章的简介 引用的这篇文…

【文末附gpt升级秘笈】AI音乐大模型崛起:版权归属与创意产业的新挑战

AI音乐大模型崛起&#xff1a;版权归属与创意产业的新挑战 随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已经深入到社会生活的各个领域&#xff0c;音乐领域也不例外。最近一个月&#xff0c;轮番上线的音乐大模型不仅为普通人打开了音乐创作的大门&…

am62x芯片安全类型确认(HS-SE, HS-FS or GP)

文章目录 芯片安全类型设置启动方式获取串口信息下载脚本运行脚本示例sk-am62x板卡参考芯片安全类型 AM62x 芯片有三个安全级别。 • GP:通用版本 • HS-FS:高安全性 - 现场安全型 • HS-SE:高安全性 - 强制安全型 在SD卡启动文件中,可以查看到, 但板上的芯片,到底是那…

手把手教你挖赏金系列(2)如何挖掘短信验证码漏洞

免责声明 由于传播、利用本公众号所发布的而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人承担。LK安全公众号及原文章作者不为此承担任何责任&#xff0c;一旦造成后果请自行承担&#xff01;如有侵权烦请告知&#xff0c;我们会立即删除并致歉。谢谢&#…