算法学习之插入排序

【21天学习挑战】经典算法之【插入排序】 插入排序是一种简单直观的排序算法,插入排序不适合对于数据量比较大的排序应用。但是,如果需要排序的数据量很小,那么插入排序还是一个不错的选择。尤其当数据基本有序时,采用插入排序可以明显减少数据交换和数据移动次数,进而提升排序效率。... 阅读详情

原理

类似于我们玩扑克牌时进行整理牌的过程

每次选出一张将其插入到已经排好的牌堆里

思路

1.得到数组后先将第一个数看做已经排好的数组

2.将已经排好的数组的下一个数,插入到已将排好的数组中,这里我们会使用一个值代表其要插入的下标的前一位

3.循环上述操作即可,循环次数为length-2,因为我们默认第一位已经排好

代码

public class insertSort {
    /**
     * 简单插入排序(扑克牌排序)
     * @param num
     * @return
     */
    public static int[] insert(int num[]){
        int insertValue = 0 ; // 要插入的值
        int insertIndex = 0 ; // 要插入的位置的下标的前一位
        for (int i = 1 ; i < num.length ; i++) {
             insertValue = num[i];// 将i之前的数组看做已经排好序的数组
             insertIndex = i - 1;
            while (insertIndex >= 0 && num[insertIndex] > insertValue) {
                // 从小到大排序 , 注意while里面条件顺序不能更改,否则会出现超出数组长度异常,将其短路
                num[insertIndex + 1] = num[insertIndex];// 满足要求向后移一位
                insertIndex--;
                for (int j = 0 ; j < num.length ; j++){
                    System.out.print(num[j]);
                }
                System.out.println();
            }
            num[insertIndex + 1] = insertValue;
        }
        return num;
    }
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入数组长度: ");
        int n = scanner.nextInt();
        int num[] = new int[n];
        System.out.println("请输入数组元素: ");
        for (int i = 0 ; i < n ; i++){
            num[i] = scanner.nextInt();
        }
        num = insert(num);
        for (int j = 0 ; j < num.length ; j++){
            System.out.print(num[j]);
        }
        System.out.println();
    }
}

EEG | CHB-MIT癫痫数据集CNN分类实战(一) CHB-MIT癫痫数据集CNN分类实战 阅读详情

相关推荐

【水文】calico-node 启动失败 Init:CrashLoopBackOff

Defaulted container "calico-node" out of: calico-node, upgrade-ipam (init), install-cni (init), mount-bpffs (init) Error from server (BadRequest): container "calico-node" in pod "calico-node-4j7td" is waiting to start: PodInitializing

大健的日常的博客 1万+

排序算法-插入排序 #算法学习

Day2题目引入 题目引入 排序算法 最经典的算法之一 菜鸟教程这里罗列了十大经典排序算法,讲解的挺详细的,还有每种算法的单独讲解并配备了动图更好理解 以下就是教程中的冒泡算法图解 ...

半本说明书 453

给jetson nano 安装AX200网卡驱动

几经波折,因为在网上看到的基本都是amd版本而非arm版,然后最终选定V5.5是因为更新的几个版本的arm版本是false的(在https://kernel.ubuntu.com/~kernel-ppa/mainline/处选择版本时,得看在arm64上是false还是build succeeded,之前没经验呀刚刚才顿悟的) 1,参考文章https://blog.youkuaiyun.com/MIRANA0/article/details/106696334 学到了得下载如下四个: wget https://k

发嘎嘎的博客 2346

C++学习笔记【算法】——插入排序算法

插入排序是一种,它通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。类似于整理扑克牌的过程。

note_mushrooms的博客 1134

物理机centos7系统重启后直接进入dracut

Warning: /dev/centos/root does not exist Warning: /dev/mapper/centos-root does not exist 在shell命令行执行以下: dracut:/# lvm vgscan dracut:/# lvm vgchange -ay dracut:/# exit 之后可以正常进入系统(测试正常)。 但是重启之后依然会进入dracut模式,永久解决如下: 查看kernel文件 [root@ecs ~]# ls -ltrh /boot

魏志标的博客 1万+

Cisco思科 电子科技大学计算机网络 SRWE 期末技能考试 (PTSA)

电子科技大学2024春_SRWE_计算机网络系统 SRWE 期末技能考试 (PTSA)

2301_76745065的博客 5097

排序算法学习——插入排序

分享插入排序的学习笔记

LiuYaoheng的博客 1253

四旋翼无人机控制算法实战:从PID到MPC的路径跟踪

本文深入探讨了四旋翼无人机控制算法的演进路径,从基础的PID控制到高级的MPC算法,详细解析了各类算法的原理、实现技巧及适用场景。通过实战案例对比分析,为开发者提供从算法选型到参数调优的全方位指导,助力提升无人机飞行控制的精度与稳定性。

weixin_29090917的博客 242

插入排序和希尔排序算法学习

在以前的学习过程只学习过冒泡排序和快速排序。自己又通过在网络的学习,记录学习一下,插入排序和希尔排序 插入排序,相关动图显示,可以帮助理解 #include &lt;stdio.h&gt; #define MAXSIZE 15 //一个用作示例的小顺序表的最大长度 #define LT(a,b) ((a)&lt;(b)) #define LQ(a,b) ((a)&...

xiaohu1996的博客 1107

大模型自我认知微调的实战教程

本文主要介绍了大模型自我认知微调的实战教程,希望对学习大语言模型的同学们有所帮助。微调成功并保留原有能力的截图如下所示: 文章目录 1. 前言 2. 配置环境 2.1 安装虚拟环境 2.2 安装依赖库 3. 实战代码 3.1 配置数据集 3.2 lora微调

herosunly的博客 4万+

24届数字IC设计/验证秋招总结贴——先看这个

为方便快速进行查找该专栏的内容,将所有内容链接均放在此篇博客中整理不易,欢迎订阅~~

qq_42135020的博客 8416

算法学习笔记:1.插入排序

算法学习第一站:插入排序 插入排序是算法学习的第一站,简单来讲就是遍历数组,将数插入到比它小的数后面,而之前已经排序过的数组中比此数大的部分向后移一位 问题: 将给定的 N 个数从小到大输出,数之间空格隔开,行末换行且无空格。 #include<iostream> using namespace std; int main() { int n,N[1000000],key,k;/*创建了一个足够大的数组,我建的这么大主要是因为我练习的是一道快速排序的题,输入规模比较大,但最终还是有两个TEL*

weixin_45343834的博客 203

2、机器人控制技术:阻抗/导纳控制与强化学习的融合

本文探讨了阻抗/导纳控制与强化学习在机器人控制中的融合应用。阻抗/导纳控制广泛应用于外骨骼和跟踪控制,通过改进方案提升建模误差下的鲁棒性;强化学习则为解决维度灾难、实现最优交互提供了有效途径,尤其在大输入空间、连续时间系统、冗余机器人及鲁棒控制中表现突出。结合近似器与合理奖励设计,强化学习可在无模型情况下实现高效控制。未来,两者融合有望推动更智能、更安全的机器人系统发展。

ice55的博客 300

【算法学习】 六 插入排序

本博客主要介绍插入排序是怎么一回事,排序原理,推导插入排序的时间复杂度。

程序猿学社的博客 3453

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【21天学习挑战赛】算法——插入排序

算法——插入排序,持续更新中……

前端御书房 241

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

算法学习笔记之插入排序算法

接下我们介绍下一种排序算法: 插入排序 插入排序算法通过比较和插入来实现排序,其排序流程如下: 1)首先对数组前两个数据进行从小到大排序 2)接下来将第3个数据与排好序的两个数据进行比较,将第3个数据插入合适的位置 3)然后,将第4个数据插入到排好序的3个数据中 4)直到...

chenghunpeng8091的博客 217

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【算法学习】 插入排序算法

插入法排序和我春节回家时间和朋友玩斗地主的时候抓扑克的方式有点像:将每一个元素以插入的方式寻找该元素的适当位置,以达到排序的目的。把n个元素的数组看成一个有序表和无序表,从无序表中拿一个元素到有序表,检查有序表中的每个元素,将其插入到一个已经排好序的数列中的适当位置,使数列依然有序,当最后一个元素放入合适位置时,该数组排序完毕。 实现 public class Insertion{ ...

愿万事胜意 260

【算法学习】插入排序

算法介绍: 插入排序(Insertion sort)是一种简单直观且稳定的排序算法。如果有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排...

lb08241的博客 275

C++入门算法学习(6)插入排序

源代码: #include<iostream> using namespace std; int a[10000]; int main() { int n = 0; int b = 0; while (cin >> b) a[n++] = b; for (int i = 1; i < n; ++i) { int now = a[i], j;//now拷贝待插牌 for (j = i - 1; j >= 0; --j) if (a[j] &.

游者的博客 173

《算法导论》学习笔记01——插入排序之递归程式

题目:(见于《算法导论》原书第二版P22,2.3-4) 插入排序可以如下改成一个递归过程:为排序A[1…n],首先递归地排序A[1…n-1],然后再将A[n]插入到已排序的数组A[1…n-1]中去。对于插入排序的这一递归版本,为它的运行时间写个递归式。 在看《算法导论》之前,从来没有想过使用递归的方式实现插入排序。 此前对于插入排序,很容易就想到了这段代码: 1 void inser...

weixin_30721077的博客 202

【学习分享】小白写算法之插入排序篇

要学好每个算法,我觉得需要先总结出规律,然后自己去推演一遍,加深记忆,否则的话很难真正领悟算法真谛,以后也很难实际去应用起来。所以沉下心来慢慢学,学会算法真的很有意思哈~想象一下我们在打扑克,我们每拿到一张牌习惯于将其插入到手中的扑克中并按顺序排列,这个就是我们第一次接触到插入排序算法。如下动图展示了从10到1的逆序序列如何进行插入排序到顺序序列的过程。

Jason_Yansir的博客 904
上一篇: 算法学习之堆排序
下一篇: 算法学习之归并排序
管管儿
博客等级 码龄7年 1粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值