首页 > 其他分享 >简单插入排序

简单插入排序

时间:2023-07-03 21:34:48浏览次数:33  
标签:arr temp int 插入排序 元素 插入 简单

简单插入排序是一种基本的排序算法,它的思想是将待排序的元素逐个插入到已经有序的数组中,从而得到一个新的有序数组。它的时间复杂度是O(n^2),空间复杂度是O(1),是一种稳定的排序算法。

简单插入排序的过程如下:

  1. 从第二个元素开始,依次取出每个元素,与前面已经有序的元素进行比较。
  2. 如果当前元素小于前面的某个元素,就将当前元素插入到该元素之前,同时将该元素及其后面的所有元素后移一位。
  3. 如果当前元素大于或等于前面所有的元素,就不需要移动,继续取出下一个元素。
  4. 重复上述步骤,直到所有的元素都被插入到正确的位置。

简单插入排序的JAVA实现如下:

public class InsertionSort {
    public static void sort(int[] arr) {
        //从第二个元素开始
        for (int i = 1; i < arr.length; i++) {
            //取出当前元素
            int temp = arr[i];
            //记录要插入的位置
            int j = i;
            //与前面已经有序的元素进行比较
            while (j > 0 && temp < arr[j - 1]) {
                //如果当前元素小于前面的某个元素,就将该元素后移一位
                arr[j] = arr[j - 1];
                //更新要插入的位置
                j--;
            }
            //将当前元素插入到正确的位置
            arr[j] = temp;
        }
    }
}

标签:arr,temp,int,插入排序,元素,插入,简单
From: https://www.cnblogs.com/shoshana-kong/p/17524130.html

相关文章

  • Jmeter学习之四_kingbaseV8R6数据库的简单验证
    Jmeter学习之四_kingbaseV8R6数据库的简单验证背景周一没去报道,因为我忘记体检了...继续在家进行学习提高自己.jmeter周末时开始看的.今天想着继续研究一下对数据库的处理突然发现人大金仓的官方csdn有一个文档,所以想着偷师,并且总结学习一下.感谢官网的资料.https......
  • 简单的python面向对象案例——跑步或吃饭
    个人学习,仅供参考要求对象:小明a.属性:姓名,体重b.方法:跑步,吃东西(每次跑步会减掉0.1kg,每次吃东西增加0.2kg)输入名字以初始体重选择跑步或吃东西,输入次数打印当前体重代码如下:#定义一个类classPerson(object):#公共属性def__init__......
  • 风变Python智能交易:玩中学、学中做,让投资更简单
    智能化时代,投资领域也在发生着巨大的变化,新的投资方式正在影响着投资者的实际行动。比如量化交易方式的出现,就成为了投资者一致信赖的选择。量化交易本身,也成为了当下以及未来每一个合格的投资者应该掌握的技能。风变还专门推出了Python智能交易课程,旨在以更严谨、专业的方式,助......
  • 如何在Django中创建一个简单的计算器应用程序
    Django是一个免费开源的PythonWeb框架,可帮助您快速开发安全且可维护的Web应用程序。在本教程中,我将逐步指导您使用django创建计算器应用程序。这是一个适合初学者的教程,因此如果您是Django新手,可以继续学习。(更|多优质内|容:java567点c0m) 我们的计算器应用程序会......
  • 第三天(SpringBoot项目部署,简单HelloWorld,打包,yaml,注入配置文件,多环境配置)
    老师的文档里大部分都写得很清楚,此处只做部分补充此处JDK应选1.8版本的,版本太高有几率出错添加启动web的依赖添加insert+alt快速配置constructorgettersettertostring松散绑定检验矫正依赖添加......
  • 搭建vsftp服务器,教程简单值得推荐
    centos7之vsftp安装和使用 centos7之vsftp安装和使用-Charles.L-博客园(cnblogs.com)......
  • P3951 小凯的疑惑 / 买不到的数目【这题简单】
    基础数论题花了一会儿,不难想出来题意:求互质的两个数\(a,b\)的线性组合所不能表示的最大数字这题简单,设\(a<b\)如果一个数\(k\)可以被表示,哪么就可以写成:\(k=x*a+y*b\)例如5,9,将非负整数划分为许多个区间\([n*b,(n+1)*b)\),分别为:\([0,9),[9,18),[18,27)\)......
  • Redis数据结构——简单动态字符串SDS
    前言相信用过Redis的人都知道,Redis提供了一个逻辑上的对象系统构建了一个键值对数据库以供客户端用户使用。这个对象系统包括字符串对象、哈希对象、列表对象、集合对象、有序集合对象等。但是Redis面向内存并没有直接使用这些对象。而是使用了简单动态字符串,链表、字典(散列表)、......
  • 《 简单现象,复杂问题。》 回复
    《简单现象,复杂问题。》      https://tieba.baidu.com/p/8486408857      回复 4楼, ⊿L= ʃ  (L0-dx)/L0*m0*g / (L0*k)  dx=   ʃ  (L0-dx) m0g / (L0² k )  dx=   m0g / (L0......
  • 人大金仓学习之一_kwr的简单学习
    人大金仓学习之一_kwr的简单学习摘要周末在家想着学习一下数据库相关的内容.网上找了不少资料,想着直接在本地机器上面进行一下安装与验证理论上linux上面应该更加简单.windows上面可能不如linux方便主要是记录一下使用和注意事项.ISO下载直接在人大金仓的官网上面......