首页 > 编程语言 >【算法基础】:(三)插入排序

【算法基础】:(三)插入排序

时间:2023-06-12 16:37:18浏览次数:32  
标签:arr int 插入排序 元素 基础 算法 排序


java基础算法

算法基础: 开始回顾下基础算法中的经典排序算法


插入排序

算法思想:一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动


一、插入排序代码

public class 插入排序 {

    /**
     * @Description 从小到大
     * 循环开始,选择的索引数据,与之前的每个数据比较(分为两组,理论上,分为循环索引开始之前的为一组,已排序,索引之后为一组,未排序)
     * 比较之后,交换位置
     * <p>
     * 根据集合来看 i=3 开始生效
     * 第1次[4, 5, 6, 3, 2, 1]
     * 第2次[4, 5, 6, 3, 2, 1]
     * 第3次[3, 4, 5, 6, 2, 1]
     * 第4次[2, 3, 4, 5, 6, 1]
     * 第5次[1, 2, 3, 4, 5, 6]
     * @Author 寂寞旅行
     * @Date 9:42 2022/2/26
     * @Param [args]
     **/
    public static void main(String[] args) {

        int[] arr = {4, 5, 6, 3, 2, 1};
        for (int i = 1; i < arr.length; i++) {
            for (int j = i; j > 0; j--) {
                int temp;
                if (arr[j] < arr[j - 1]) {
                    temp = arr[j];
                    arr[j] = arr[j - 1];
                    arr[j - 1] = temp;
                }
            }
            System.out.println("第" + i + "次" + Arrays.toString(arr));
        }
    }
}

二、动画演示

【算法基础】:(三)插入排序_java


总结

可以看到希尔排序的核心思想是当前元素与之前的每个元素比较,相当于每个元素之前的顺序都是排好序的,之后的元素都是乱序的,按照此法对所有元素进行插入,直到整个序列排为有序的过程,称为插入排序


标签:arr,int,插入排序,元素,基础,算法,排序
From: https://blog.51cto.com/u_16158506/6463433

相关文章

  • 【算法基础】:(四)选择排序
    java基础算法算法基础:开始回顾下基础算法中的经典排序算法选择排序是插入排序的一种算法思想:选择排序在开始的时候,先扫描整个列表,以找到列表中的最小元素,然后将这个元素与第一个元素进行交换。这样最小元素就放到它的最终位置上。然后,从第二个元素开始扫描,找到n-1个元素中的最小......
  • SpringBoot多模块项目搭建以及搭建基础模板
    多模块项目搭建目录多模块项目搭建1.父项目pom文件编辑2.创建子模块1.父项目pom文件编辑<!--1.父工程添加pom格式--><packaging>pom</packaging><!--定义子模块--><modules><module>walker-service</module><module>walker-utils&......
  • 算法:丑数
    题目描述编写一个程序判断给定的数是否为丑数。丑数就是只包含质因数2,3,5的正整数。示例1:输入:6输出:true解释:6=2×3示例2:输入:8输出:true解释:8=2×2×2示例3:输入:14输出:false解释:14不是丑数,因为它包含了另外一个质......
  • m基于FPGA的基础OFDM调制解调verilog实现,包括IFFT和FFT,包含testbench
    1.算法仿真效果其中Vivado2019.2仿真结果如下:2.算法涉及理论知识概要正交频分复用(OrthogonalFrequencyDivisionMultiplexing,OFDM)是一种多载波调制技术,其基本原理是将高速数据信号分成多个低速子载波,在每个子载波上调制数据,将所有子载波叠加在一起形成OFDM信号。OFDM信号具......
  • 科技云报道:大模型时代,AI基础软件机会何在?
    科技云报道原创。大模型时代,离不开算力,算法、数据的喂养。如果将视角放至整个产业链上,算法背后,还有一个关键要素值得被关注,那就是AI基础软件。算法是实现AI功能的关键,而基础软件则为算法提供运行的平台和工具。作为模型生态系统的中坚力量,AI基础软件将会成为大模型应用落地的最主要......
  • 【技术积累】算法中的回溯算法【一】
    回溯算法是什么回溯算法是一种用于求解在某个搜索空间中的问题的算法。它基本思想是从问题的某一种状态开始不断地尝试各种可能的选择,直到找到一种满足问题要求的解或者发现这些选择都无法满足要求时,就回到上一个状态,尝试其他的选择。回溯算法通常采用递归的方法实现,它会不断地......
  • m基于FPGA的基础OFDM调制解调verilog实现,包括IFFT和FFT,包含testbench
    1.算法仿真效果其中Vivado2019.2仿真结果如下   2.算法涉及理论知识概要       正交频分复用(OrthogonalFrequencyDivisionMultiplexing,OFDM)是一种多载波调制技术,其基本原理是将高速数据信号分成多个低速子载波,在每个子载波上调制数据,将所有子载波叠加在一......
  • 算法题:求解斐波那契数列
    概念:斐波那契数列是指以0,1开始,之后每一项都等于前两项之和的数列,即:0,1,1,2,3,5,8,13,21,34,55,89,144……以此类推。这个数列最早是由13世纪意大利数学家斐波那契提出的,并在数学、自然科学和计算机科学等领域有着广泛的应用。题目:若有一只兔子,它每个月生一只小兔子,而小兔子......
  • 人民日报:天翼云持续拓展云网基础设施覆盖广度和深度
    5月31日,由人民日报文化传媒有限公司主办的2023数字经济论坛在北京举行,本次论坛主题为“发展数字经济,共建数字中国”。人民日报社副总编辑徐立京、中国国际经济交流中心副理事长王一鸣、科学技术部高技术研究发展中心主任张洪刚、工业和信息化部信息技术发展司一级巡视员王建伟、中......
  • 关于你的类该是什么包装类还是基础类型的疑惑?例如Long和long
    解释一下在Java中,long是基本数据类型,而Long是对应的包装类。DTO实体类中需要使用长整型的属性时,应该使用Long而不是long。这是因为DTO实体类通常用于数据传输,而数据传输过程中需要使用对象,而非基本数据类型。另外,使用Long能够提供更好的灵活性和安全性,因为它可以为null......