浅谈数据结构之直接插入排序的理解

WinServer 2012 R2 搭建 AD 单域多站点 及 DNS各站点的子网掩码排序调整 阅读详情

要想透彻的理解这个算法,如果玩儿过扑克的朋友,请一定回想起来玩儿扑克牌的情景。

首先,摸第一张牌,不用整理手牌。

摸第二张,然后,如果比第一张大,那么,插入到第二张的后面(这儿我们先以从小到大排序),如果不是,那么,我们就往前找,两张牌的时候,直接就找到了。

摸第三张,像刚才的那样。

......

摸第N张,我们摸起来的牌就是从小到大排序排好了的。

  public static class TestSorting
    {
        public static void InsertSortAsending(List<int> arr)
        {
            int flag = -1,j=-1;
            //第一张牌肯定是有序的,那么,就从第二个开始做循环
            for (int i = 1; i < arr.Count; i++)
            {
                flag = arr[i];
                //摸牌,
                j = i - 1;//0-i-1之前的牌,肯定是已经排序排好了的。
                //当满足循环的时候,一直往前挪动位置
                while (flag<arr[j])
                {
                    //因为之前的数据是已经排序好了的,我们只需要找到当前摸的牌插到什么地方。
                    arr[j + 1] = arr[j];//一直往后挪动位置,把空位置给要插入的牌
                    j--;   if (j==-1)
                    {
                        break;
                    }
//这儿从最后一个数开始挪动,如果是从大到小,那么,就因人而异了。 } //当不满足这个情况的时候,说明,找到合适的插入的位置了。 arr[j + 1] = flag; //将摸上来的牌,插进去,然后继续摸牌。 } }



如果我们需要从到大到小排序,是不是只需要改变while (flag>arr[j])这个符号就行?没错,我们插入的顺序反过来了而已。

*直接插入排序的算法复杂度是O(N*N),和冒泡排序的效率一样。

最后:送大家一个好运气。


哈哈偷笑


FPGA电路设计2——芯片原理图绘制 FPGA板卡设计要点:1. 引脚分配遵循电平标准分组原则,需通过预编译验证;2. 电源设计需满足上电时序要求并合理估算功耗;3. 最小系统包含配置Bank(Bank0)、通用I/O Bank(HRBank)、高性能Bank(HPBank)和高速收发器Bank(MGT/GTX)。其中Bank0负责关键配置功能,包括模式选择(支持SPI/BPI/JTAG等5种配置方式)、JTAG调试接口和系统监控引脚,其电压选择(CFGBVS_0)必须与VCCO_0电压匹配。 阅读详情

相关推荐

用Pixhawk 2.4.8和PX4 1.13,从零搭建你的第一支无人机编队(附避坑清单)

本文详细介绍了如何使用Pixhawk 2.4.8飞控和PX4 1.13固件从零搭建低成本无人机编队系统。涵盖硬件选型、固件配置、多机通信和编队飞行逻辑开发的全流程,特别针对学生和爱好者提供实战验证的避坑方案,帮助实现多机协同飞行。

weixin_27219587的博客 403

数据结构——排序算法分析与总结

排序算法

island1314的博客 4088

ADS2020实战:手把手教你搭建交叉耦合VCO并分析相位噪声(附避坑指南)

本文以ADS2020软件为例,提供了交叉耦合压控振荡器(VCO)从原理图搭建到相位噪声分析的完整实战指南。详细讲解了核心器件选择、谐波平衡与瞬态仿真的关键设置,并重点剖析了相位噪声的仿真方法与优化方向。文中附有详细的避坑指南,帮助初学者和工程师高效完成VCO设计与仿真验证,避免常见错误。

p5l2m9n4o6q的博客 283

我---对‘数据结构’中‘排序’的理解 ---------3:选择排序--(二)堆排序

堆排序  是由 树形选择排序 优化而来锦标赛排序:锦标赛排序,也称为树形选择排序(Tree Selection Sort),是一种按照锦标赛的思想进行选择排序的方法。首先对n个记录进行两两比较,然后优胜者之间再进行两两比较,如此重复,直至选出最小关键字的记录为止。这个过程可以用一棵有n个叶子结点的完全二 叉树表示。根节点中的关键字即为叶子结点中的最小关键字。在输出最小关键字之后,根据关系的可传递性,欲选出次小关键字,仅需将叶子结点中的最小关键字改 为“最大值”,如∞,然后从该叶子结点开始,和其左

zx824 1023

机器学习的学习准则(期望风险最小化、经验风险最小化、结构风险最小化)

要评价模型f(x, θ)的好坏,可通过期望风险R(θ)来衡量:求期望损失R(θ)不仅需要知道损失函数还需要知道真实分布,损失函数可以通过一定的准则计算得到,但是样本空间的真实分布是未知的。所以不能直接求R(θ)。期望风险R(θ)无法计算,给定一个训练集D =,我们可以计算经验风险,经验风险就是在训练集上的平均损失:为了解决过拟合问题,引入了参数正则化来限制模型的能力。使其不要过度的最小化经验风险。这种准则就是结构风险最小化准则

... 2225

强化学习原理及应用作业之动态规划算法【SYSU_2023SpringRL】

本次实践作业将在以下环境进行: 该环境由一个 6×6 网格组成,其中黄色圆圈为智能体出发点,黑色格子为无法通过的墙壁,若智能体向着墙壁方向移动,则会停留在原地,地图边界的移动同理。带有黄色边框的格子为终止状态,即若智能体行动至此状态则整个 episode 结束。红色和绿色表示当前该状态的奖励值,奖励越高则绿色越深,奖励越低则红色越深。状态空间:36(0-35 这 36 个整数,左下角为 0,向右 +1,向上 +6)动作空间:4(0-3 这 4 个整数分别代表左、右、上、下)奖励函数:普通格子 -0.1,到

zik的博客 1398

直接插入排序学习笔记与学习心得

直接插入排序学习笔记与学习心得 插入排序代码 编写环境Xcode 使用语言C++ // // main.cpp // 直接插入排序 // // Created by Neil Xie on 2020/3/23. // Copyright © 2020 Neil Xie. All rights reserved. // #include <iostream> using...

weixin_43823538的博客 1117

WinClaw安全实战 02|五层纵深防护体系全解析:从原理到实操,打造零风险AI智能体

2026年AI智能体爆发式普及,OpenClaw以27.3万GitHub星标成为现象级工具,但恶意Skill投毒、提示词注入、数据外泄等安全事故频发,国家互联网应急中心、工信部等多部门接连发布风险警示。威努特基于国家关键信息基础设施安全防护经验,打造WinClaw安全版AI智能体,其核心竞争力在于**五层纵深防护体系**。本文从安全痛点切入,通过真实事故案例揭示风险本质,全景解构五层防护的架构设计与技术原理,逐层拆解身份认证、安装审查、消息拦截、执行约束、监控审计的实现逻辑,搭配20+实操演示、对比表格

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 498

排序算法之直接插入排序

1. 插入排序概念        插入排序的基本方法是:每一步将一个待排序的元素,按其排序码的大小,插入到前面已经排好序的一组元素的适当位置上去,直到元素全部插入为止。        可以选择不同的方法在已经排好序数据表中寻找插入位置。根据查找方法不同,有多种插入排序方法,下面要介绍的是直接插入排序。2. 直接插入排序基本思想      直接插入插排的基本思想是:当插入第i(i &gt;= 1)时...

数据结构学习心得 8万+

17、自适应和学习索引:在线物理设计调整的新维度

本文探讨了现代数据库管理系统中自适应索引和数据库裂解的新方法,通过结合学习模型与多臂老虎机(MAB)框架,实现在线物理设计调整。文章详细介绍了自适应索引的工作原理、数据库裂解技术以及如何利用机器学习进行索引选择和优化,并讨论了MAB框架在动态调整索引结构中的应用及其实际案例。

go5gopher的博客 82

【ESP32接入国产大模型之豆包】

🥳🥳🥳现在,我们在本教程中,您学习了如何使用ESP32接入语言大模型之豆包。🛹🛹🛹从而实现对外部世界进行感知,充分认识这个有机与无机的环境,后期会持续分享esp32跑freertos实用案列🥳🥳🥳科学地合理地进行创作和发挥效益,然后为人类社会发展贡献一点微薄之力。🤣🤣🤣如果你有任何问题,可以通过q group(945348278)加入鹏鹏小分队,期待与你思维的碰撞😘😘😘。

vor234的博客 1万+

数据结构之 折半插入排序(算法思想、代码实现)

折半插入排序(Binary Insertion Sort)是对插入排序算法的改进。 排序思想: 有一组数据待排序,排序区间为Array[0]~Array[n-1]。 将数据分为有序数据和无需数据,第一次排序是默认Array[0]为有序数据,Array[1]!Array[n -1]为无序数据;有序数据分区的第一个元素位置为low,最后一个元素位置为high; 遍历无序区间的所有元素,每次去无序区间...

C_U_N_Z的博客 2324

【深度解析】解决 NVIDIA 显卡“掉卡”与 Xid 79 错误:开启持久化模式 (Persistence Mode)

【深度解析】解决 NVIDIA 显卡“掉卡”与 Xid 79 错误:开启持久化模式 (Persistence Mode)

Edward的博客 866

浅谈常见排序

排序的简单分类 排序的分类:排序分为插入排序、选择排序、交换排序、归并排序四大类; 我们将待排序的数组设为a【】,元素个数位n 插入排序 1.直接插入 直接插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的记录增加1的有序表。 2.希尔插入排序 按一定跨度d两两进行比对并按序交换位置,进行完一轮比对后跨度缩小再进行下一轮,经过几轮后先将整个序列变成部分有序,然后再进行直接插入排序,减少直接插入排序的开销 选择排序 1.简单选择排序 简单选择排序是取出一个元素

m0_56186053的博客 420

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

浅谈数据结构中的排序

首先简短介绍一下排序的相关概念: 排序的分类 ①按照排序的类型 内排序 外排序 ②按照稳定性(排序前后记录的相对位置) 稳定性排序 非稳定性排序 ③连续顺序文件排序与链表排序 (1)连续顺序文件排序:通过链表地址的前后映射,移动记录的位置。 (2)链表排序:文件中的一个记录对应链表中的一个链结点,指针反映逻辑顺序。 (Ⅰ)我们先来介绍一个简单的插入排序。 插入排序的基本思想: 插入排序:直接插...

u011010440的博客 375

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

浅谈Java数据结构和算法

数据结构分类:线性结构和非线性结构 问题一: 什么是线性和非线性; 我个人的理解是:数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构; 线性结构包括:数组,链表,队列,栈; 非线性结构包括:树,图,表; 详解: 一.线性结构 1.数组 特点:我们都知道数组中的元素在内存中连续存储的,可以根据是下标快速访问元素,因此,查询速度很快,然而插入和删除时,需要对元素移动空间,比较慢...

阿狸来了,哇咔咔 174

浅谈算法和数据结构: 二 基本排序算法

浅谈算法和数据结构: 二 基本排序算法 本篇开始学习排序算法。排序与我们日常生活中息息相关,比如,我们要从电话簿中找到某个联系人首先会按照姓氏排序、买火车票会按照出发时间或者时长排序、买东西会按照销量或者好评度排序、查找文件会按照修改时间排序等等。在计算机程序设计中,排序和查找也是最基本的算法,很多其他的算法都是以排序算法为基础,在一般的数据处理或分析中,通常第一步就是进行排序,比如说二分查找,...

m0_37316406的博客 173

浅谈JAVA数据结构和算法

浅谈JAVA数据结构和算法 数据结构分类:线性结构和非线性结构 问题一: 什么是线性和非线性; 我个人的理解是:数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构; 线性结构包括:数组,链表,队列,栈; 非线性结构包括:树,图,表; 详解: 一.线性结构 1.数组 特点:我们都知道数组中的元素在内存中连续存储的,可以根据是下标快速访问元素,因此,查询速度很快,然而插入和删除时...

weixin_43555129的博客 170

浅谈算法和数据结构

    &lt;div class="post"&gt;         &lt;h1 class="postTitle"&gt;             &lt;a id="cb_post_title_url" class="postTitle2" href="https://www.cnblogs.com/huojg-21442/p/7246518.html"&a

u013134722的博客 291

浅谈以数据结构的视角去解决算法问题的步骤

浅谈以数据结构的视角去解决算法问题的步骤 在程序设计中,很多复杂的算法设计问题,从数据结构的角度来看其实都可以按照这种思路来解决: 1.对于要处理的一组数据,根据实际需求整理出要处理的数据元素。 2.理清这些数据元素之间存在的逻辑关系。 3.结合以上两点,根据数据结构所学知识和实际要解决的问题,选择一种合适的数据结构。 4.数据结构包括数据的逻辑结构和数据的存储结构,同一种逻辑结构有

zolalad的专栏 3434

java数据结构与算法_浅谈Java数据结构和算法

今天的突然看集合底层的时候发现了好多算法和数据结构。再次就比较一下和汇总一下。数据结构分类:线性结构和非线性结构问题一:什么是线性和非线性;我个人的理解是:数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构;线性结构包括:数组,链表,队列,栈;非线性结构包括:树,图,表;详解:一.线性结构1.数组特点:我们都知道数组中的元素在内存中连续存储的,可以根据是下标快速访问元素,因此...

weixin_32721919的博客 127

算法浅谈:七大经典排序03

今天跟大家聊聊最后三种排序: 直接插入排序,希尔排序和归并排序。   直接插入排序:        这种排序其实蛮好理解的,很现实的例子就是俺们斗地主,当我们抓到一手乱牌时,我们就要按照大小梳理扑克,30秒后,    扑克梳理完毕,4条3,5条s,哇塞......  回忆一下,俺们当时是怎么梳理的。        最左一张牌是3,第二张牌是5,第三张牌又是3,赶紧插到第一张牌后面去,第四

Jason的专栏 228

北风网java数据结构和算法_浅谈Java数据结构和算法

今天的突然看集合底层的时候发现了好多算法和数据结构。再次就比较一下和汇总一下。数据结构分类:线性结构和非线性结构问题一:什么是线性和非线性;我个人的理解是:数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构;线性结构包括:数组,链表,队列,栈;非线性结构包括:树,图,表;详解:一.线性结构1.数组特点:我们都知道数组中的元素在内存中连续存储的,可以根据是下标快速访问元素,因此...

weixin_30536861的博客 213
上一篇: CSS之visibility和display的差别
下一篇: 妹子UI之自定义分页控件
遛狗的代码
博客等级 码龄11年 10粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值