插入_插入排序算法 - CSDN
精华内容
参与话题
  • 插入排序

    2018-12-17 12:02:58
    #include<iostream> using namespace std; int main() { int a[5] = { 9,6,15,4,2 };//9默认在外面的 int t,j,i; //放抽出来的数,j是新序列 for (i = 1; i <...amp...

    #include<iostream>
    using namespace std;
    
    int main()
    {
    	int a[5] = { 9,6,15,4,2 };//9默认在外面的
    	int t,j,i; //放抽出来的数,j是新序列
    	for (i = 1; i < 5; i++)
    	{
    		t = a[i];
    		for (j = i-1; j >= 0 && t < a[j]; j--)//a[j]是外面新序列的每一个元素
    		{
    			a[j + 1] = a[j];
    		}
    		a[j + 1] = t;//将6赋值给第一个位置,构成新的序列
    	}
    	for (int i = 0; i < 5; i++)
    	{
    		cout << a[i] << endl;
    	}
    	system("pause");
    	return 0;
    }

     

    展开全文
  • INSERT 语句 增加条件,条件成立插入,否则不插入

    万次阅读 热门讨论 2020-08-04 15:25:33
    遇到一个sql插入的场景,就是在sql插入新数据的时候,直接在sql中判断条件是否满足,如果条件不满足则不插入新数据,某则插入新数据。 这里的场景是给用户发放金币,那么就有两个问题是需要注意的 1、用户可以领取...

    不推荐用本文的方法

    如果可以最好是为表增加 联合主键 ,本文介绍的方法会降低运行速度。

    业务层插入数据,联合主键唯一 ,如果重复就插入失败,业务层通过查询确认信息是否已经插入即可。

     

    问题描述:

    遇到一个sql插入的场景,就是在sql插入新数据的时候,直接在sql中判断条件是否满足,如果条件不满足则不插入新数据,某则插入新数据。

    这里的场景是给用户发放金币,那么就有两个问题是需要注意的

    1、用户可以领取的金币总数有限制

    2、总共发送出去的金币总数有限制

     

    问题解决:

    ·业务问题的本质

    先从业务场景中提取出一般性的问题,即 insert 语句中增加一些条件语句。

    ·实验表的表结构-主键自增-mysql 数据库

    CREATE TABLE `usermodel` (
      `userName` int(8) NOT NULL auto_increment,
      `passWord` varchar(32) default NULL,
      `createDate` datetime default NULL,
      PRIMARY KEY  (`userName`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表'

    ·基础数据-就一条,作为insert语句是否执行的判断条件

    ·sql 语句

    #比如:如果数据库中存在 passWord='change'的数据则插入新数据,否则不插入新数据,这里主键是自动生成的
    INSERT INTO userModel (userModel.passWord,userModel.`createDate`) SELECT 'change',NOW()
    FROM DUAL WHERE EXISTS (SELECT 1 FROM userModel u WHERE u.passWord<>'change');

     

    ·sql 比对-正常插入语句和insert增加判定条件语句

    insert into  tablename( 属性1,属性2) values ('值1',‘值2’);

    insert into  tablename(属性1,属性2) select '值1','值2' from dual where exists (select 1 from tablename where 子句); 

     

    其中,select 1 from tablename where 子句

    当,where 子句成立,这句搜索结果为1,否则搜索结果为空

     

    如果不允许select 1 from tablename where 子句 成立为筛选条件的话,可以使用 not exists

    这里举一个例子

    <insert id="insertdemo" parameterType="com.略.entity.table_name">
      insert into table_name (id, name 
          )
          select  #{id}, #{name}
          from dual where not exists 
          (select 1 from table_name where id=#{id} and name=#{name})
      </insert>

    鸣谢

    感谢吴小琼同学提供的解决方法,本文仅起到整理作用。

     

    补充-insert从另一张表迁移数据-2017-06-07

    表主键是自动生成的

    INSERT usermodel2 (usermodel2.`passWord`,usermodel2.`createDate`) SELECT usermodel.`passWord`,usermodel.`createDate` FROM usermodel WHERE usermodel.`userName`='658469'

    补充-在自动生成主键的情况下,依旧可以使用存在判定-2018-02-27

    经过测试,可以以一下几种方式插入数据

    ·指定插入id,值为null,最终保存结果为自增id值

    <insert id="insertBySelf" parameterType="com.bestcxx.stu.springmybatis.model.TestTableOne" useGeneratedKeys="true"
      keyProperty="id">
      	insert into test_table_one (id) SELECT NULL FROM DUAL  where not exists
        (select 1 from test_table_one where id='500')
      </insert>

    ·指定id具体指,自增策略失效

     

    <insert id="insertBySelf" parameterType="com.bestcxx.stu.springmybatis.model.TestTableOne" useGeneratedKeys="true"
      keyProperty="id">
      	insert into test_table_one (id) SELECT '123' FROM DUAL  where not exists
        (select 1 from test_table_one where id='500')
      </insert>

    ·主键自增,插入可为空属性comment,值为 null 或者 '',最终主键为自增值

     

    <insert id="insertBySelf" parameterType="com.bestcxx.stu.springmybatis.model.TestTableOne" useGeneratedKeys="true"
      keyProperty="id">
      	insert into test_table_one (comment) SELECT '' FROM DUAL  where not exists
        (select 1 from test_table_one where id='500')
      </insert>

    或者

     

    <insert id="insertBySelf" parameterType="com.bestcxx.stu.springmybatis.model.TestTableOne" useGeneratedKeys="true"
      keyProperty="id">
      	insert into test_table_one (comment) SELECT null FROM DUAL  where not exists
        (select 1 from test_table_one where id='500')
      </insert>

    附图:

     

    补充,db2 等系统表是 SYSIBM.SYSDUMMY1    2018年05月10日

    mysql和Oracle 是从 dual 查询

    db2 是 

    SYSIBM.SYSDUMMY1

     

    补充 2019-08-23,oracle 环境

    表中存在数据的情况

    表中不存在数据的情况-

    下面搜索结果为空,1是列名,不是数据,在代码中你获得的是null

     

    展开全文
  • 插入排序法(详细介绍)

    万次阅读 多人点赞 2019-05-24 10:59:59
    前面我的博文中详细介绍了冒泡排序法、选择排序法,今天我们继续学习另一种排序方法—插入排序,分为前插排序和后插排序。 插入排序的基本思想是:将数组的第一个数认为是有序数组,从后往前(从前往后)扫描该有序...

    前面我的博文中详细介绍了冒泡排序法选择排序法,今天我们继续学习另一种排序方法—插入排序,分为前插排序和后插排序。

    插入排序的基本思想是:将数组的第一个数认为是有序数组,从后往前(从前往后)扫描该有序数组,把数组中其余n-1个数,根据数值的大小,插入到有序数组中,直至数组中的所有数有序排列为止。这样的话,n个元素需要进行n-1趟排序!!!

    举个例子:4个数字4,6,7,5进行从大到小的排序。前插排序法具体过程如下:
    把第一个数4插入到空的有序数组中的第一个位置上,得到新数字序列4;

    第一趟:从后往前扫描有序数组,将第二个数字6和有序数组中的4进行比较,6大于4,此时将4后移一个位置。此时已经扫描完有序数组中的数,将6插入到4的前面(有序数组的第一个位置),得到新数字序列6,4;

    第二趟:从后往前扫描有序数组,先将第三个数字7和有序数组中的4进行比较,7大于4,此时将4后移一个位置;再将7和有序数组中的6进行比较,7大于6,此时将6后移一个位置。此时已经扫描完有序数组中的数,将7插入到6的前面(有序数组的第一个位置),得到新数字序列7,6,4;

    第三趟:从后往前扫描有序数组,先将第四个数字5和有序数组中的4进行比较,5大于4,此时将4后移一个位置;再将5和有序数组中的6进行比较,5小于6,由于有序数组就按照从大到小排列的,此时直接把5插入到4的前面即可!不需要再和7进行比较!最后,得到新数字序列7,6,5,4;

    插入排序的关键点:
    1、采用双层循环:时间复杂度也是O(n的平方)
    (1)外层循环表示的是排序的趟数,n个数字需要n-1趟,因此,外层循环的次数是n-1次;同时也代表数的位置。
    (2)内层循环表示的是每一趟排序的数字。根据插入排序的思想,第i趟排序时,有序数组中的数字就有i个,就需要进行i次比较,因此循环i次。注意采用的是从后往前进行比较。
    2、从后往前扫描的时候,如果必须插入的数大于有序数组中当前位置的数,则有序数组中的数和它之后的数均往后移一个位置,否则,把插入的数插入到有序数组中。(稳定排序)

    为了便于道友们向我咨询问题,特意开设了一个免费的知识星球——CaptianXue,星球提供学习、理财、生活、职场等各类文章和免费答疑!!
    在这里插入图片描述

    附上完整的插入排序的C++代码和相关注释;:

       #include<iostream>
        #include<cstdio>
        using namespace std;
        #define N 5
        int a[N];//有序数组
        int main ( ) {
        	int i, k, x;
        	printf("Please input %d numbers:\n",N);   
        	for (i=0; i<N; i++) {
        		scanf ("%d", &x);
        		for ( k=i; k>0; k-- ) {	        /* 从后向前比较 */
        			if ( a[k-1] > x )    //x前面的数比它大
        				a[k]=a[k-1];         /* 将大数向后移动*/
        			else      break; /* 找到插入的位置,退出 */
        		}
        		a[k] = x;  /* 完成插入操作 */
        	}
        
        	for (i=0; i<N; i++)
        		printf("%d ", a[i]);
        	return 0;
        }
    

    更多的排序算法:
    sort函数排序 https://blog.csdn.net/weixin_43956598/article/details/90241551
    冒泡排序 https://blog.csdn.net/weixin_43956598/article/details/90176251
    选择排序 https://blog.csdn.net/weixin_43956598/article/details/90178197
    插入排序 https://blog.csdn.net/weixin_43956598/article/details/90181567
    快速排序 https://blog.csdn.net/weixin_43956598/article/details/90215135
    希尔排序 https://blog.csdn.net/weixin_43956598/articledetails/90234480
    堆排序 https://blog.csdn.net/weixin_43956598/article/details/90343547

    展开全文
  • B树和B+树的插入、删除图文详解

    千次阅读 2018-10-21 17:37:45
    1. B树 1. B树的定义 B树也称B-树,它是一颗多路平衡查找树。我们描述一颗B树时需要指定它的阶数,阶数表示了一个结点最多有多少个孩子结点,一般用字母m表示阶数。当m取2时,就是我们常见的二叉搜索树。...

    1. B树

    1. B树的定义

    B树也称B-树,它是一颗多路平衡查找树。我们描述一颗B树时需要指定它的阶数,阶数表示了一个结点最多有多少个孩子结点,一般用字母m表示阶数。当m取2时,就是我们常见的二叉搜索树。

    一颗m阶的B树定义如下:

    1)每个结点最多有m-1个关键字。

    2)根结点最少可以只有1个关键字。

    3)非根结点至少有Math.ceil(m/2)-1个关键字。

    4)每个结点中的关键字都按照从小到大的顺序排列,每个关键字的左子树中的所有关键字都小于它,而右子树中的所有关键字都大于它。

    5)所有叶子结点都位于同一层,或者说根结点到每个叶子结点的长度都相同。

    clip_image002

    上图是一颗阶数为4的B树。在实际应用中的B树的阶数m都非常大(通常大于100),所以即使存储大量的数据,B树的高度仍然比较小。每个结点中存储了关键字(key)和关键字对应的数据(data),以及孩子结点的指针。我们将一个key和其对应的data称为一个记录但为了方便描述,除非特别说明,后续文中就用key来代替(key, value)键值对这个整体。在数据库中我们将B树(和B+树)作为索引结构,可以加快查询速速,此时B树中的key就表示键,而data表示了这个键对应的条目在硬盘上的逻辑地址。

     

    1.2 B树的插入操作

    插入操作是指插入一条记录,即(key, value)的键值对。如果B树中已存在需要插入的键值对,则用需要插入的value替换旧的value。若B树不存在这个key,则一定是在叶子结点中进行插入操作。

    1)根据要插入的key的值,找到叶子结点并插入。

    2)判断当前结点key的个数是否小于等于m-1,若满足则结束,否则进行第3步。

    3)以结点中间的key为中心分裂成左右两部分,然后将这个中间的key插入到父结点中,这个key的左子树指向分裂后的左半部分,这个key的右子支指向分裂后的右半部分,然后将当前结点指向父结点,继续进行第3步。

    下面以5阶B树为例,介绍B树的插入操作,在5阶B树中,结点最多有4个key,最少有2个key


    a)在空树中插入39

    clip_image002[4]

    此时根结点就一个key,此时根结点也是叶子结点


    b)继续插入22,97和41

    clip_image004

    根结点此时有4个key


    c)继续插入53

    clip_image006

    插入后超过了最大允许的关键字个数4,所以以key值为41为中心进行分裂,结果如下图所示,分裂后当前结点指针指向父结点,满足B树条件,插入操作结束。当阶数m为偶数时,需要分裂时就不存在排序恰好在中间的key,那么我们选择中间位置的前一个key或中间位置的后一个key为中心进行分裂即可。

    clip_image008


    d)依次插入13,21,40,同样会造成分裂,结果如下图所示。

    clip_image010


    e)依次插入30,27, 33 ;36,35,34 ;24,29,结果如下图所示。

    clip_image012


    f)插入key值为26的记录,插入后的结果如下图所示。

    clip_image014

    当前结点需要以27为中心分裂,并向父结点进位27,然后当前结点指向父结点,结果如下图所示。

    clip_image016

    进位后导致当前结点(即根结点)也需要分裂,分裂的结果如下图所示。

    clip_image018

    分裂后当前结点指向新的根,此时无需调整。


    g)最后再依次插入key为17,28,29,31,32的记录,结果如下图所示。

    clip_image020


    在实现B树的代码中,为了使代码编写更加容易,我们可以将结点中存储记录的数组长度定义为m而非m-1,这样方便底层的结点由于分裂向上层插入一个记录时,上层有多余的位置存储这个记录。同时,每个结点还可以存储它的父结点的引用,这样就不必编写递归程序。

    一般来说,对于确定的m和确定类型的记录,结点大小是固定的,无论它实际存储了多少个记录。但是分配固定结点大小的方法会存在浪费的情况,比如key为28,29所在的结点,还有2个key的位置没有使用,但是已经不可能继续在插入任何值了,因为这个结点的前序key是27,后继key是30,所有整数值都用完了。所以如果记录先按key的大小排好序,再插入到B树中,结点的使用率就会很低,最差情况下使用率仅为50%。

     

    1.3 B树的删除操作

    删除操作是指,根据key删除记录,如果B树中的记录中不存对应key的记录,则删除失败。

    1)如果当前需要删除的key位于非叶子结点上,则用后继key(这里的后继key均指后继记录的意思)覆盖要删除的key,然后在后继key所在的子支中删除该后继key。此时后继key一定位于叶子结点上,这个过程和二叉搜索树删除结点的方式类似。删除这个记录后执行第2步

    2)该结点key个数大于等于Math.ceil(m/2)-1,结束删除操作,否则执行第3步。

    3)如果兄弟结点key个数大于Math.ceil(m/2)-1,则父结点中的key下移到该结点,兄弟结点中的一个key上移,删除操作结束。

    否则,将父结点中的key下移与当前结点及它的兄弟结点中的key合并,形成一个新的结点。原父结点中的key的两个孩子指针就变成了一个孩子指针,指向这个新结点。然后当前结点的指针指向父结点,重复上第2步。

    有些结点它可能即有左兄弟,又有右兄弟,那么我们任意选择一个兄弟结点进行操作即可。

    下面以5阶B树为例,介绍B树的删除操作,5阶B树中,结点最多有4个key,最少有2个key


    a)原始状态

    clip_image021


    b)在上面的B树中删除21,删除后结点中的关键字个数仍然大于等2,所以删除结束。

    clip_image023


    c)在上述情况下接着删除27。从上图可知27位于非叶子结点中,所以用27的后继替换它。从图中可以看出,27的后继为28,我们用28替换27,然后在28(原27)的右孩子结点中删除28。删除后的结果如下图所示。

    clip_image025

    删除后发现,当前叶子结点的记录的个数小于2,而它的兄弟结点中有3个记录(当前结点还有一个右兄弟,选择右兄弟就会出现合并结点的情况,不论选哪一个都行,只是最后B树的形态会不一样而已),我们可以从兄弟结点中借取一个key。所以父结点中的28下移,兄弟结点中的26上移,删除结束。结果如下图所示。

    clip_image027


    d)在上述情况下接着32,结果如下图。

    clip_image029

    当删除后,当前结点中只key,而兄弟结点中也仅有2个key。所以只能让父结点中的30下移和这个两个孩子结点中的key合并,成为一个新的结点,当前结点的指针指向父结点。结果如下图所示。

    clip_image031

    当前结点key的个数满足条件,故删除结束。


    e)上述情况下,我们接着删除key为40的记录,删除后结果如下图所示。

    clip_image033

    同理,当前结点的记录数小于2,兄弟结点中没有多余key,所以父结点中的key下移,和兄弟(这里我们选择左兄弟,选择右兄弟也可以)结点合并,合并后的指向当前结点的指针就指向了父结点。

    clip_image035

    同理,对于当前结点而言只能继续合并了,最后结果如下所示。

    clip_image037

    合并后结点当前结点满足条件,删除结束。

     

    2.B+树

    2.1 B+树的定义

    clip_image039

    各种资料上B+树的定义各有不同,一种定义方式是关键字个数和孩子结点个数相同。这里我们采取维基百科上所定义的方式,即关键字个数比孩子结点个数小1,这种方式是和B树基本等价的。上图就是一颗阶数为4的B+树。

    除此之外B+树还有以下的要求。

    1)B+树包含2种类型的结点:内部结点(也称索引结点)和叶子结点。根结点本身即可以是内部结点,也可以是叶子结点。根结点的关键字个数最少可以只有1个。

    2)B+树与B树最大的不同是内部结点不保存数据,只用于索引,所有数据(或者说记录)都保存在叶子结点中。

    3) m阶B+树表示了内部结点最多有m-1个关键字(或者说内部结点最多有m个子树),阶数m同时限制了叶子结点最多存储m-1个记录。

    4)内部结点中的key都按照从小到大的顺序排列,对于内部结点中的一个key,左树中的所有key都小于它,右子树中的key都大于等于它。叶子结点中的记录也按照key的大小排列。

    5)每个叶子结点都存有相邻叶子结点的指针,叶子结点本身依关键字的大小自小而大顺序链接。

     

    2.2 B+树的插入操作

    1)若为空树,创建一个叶子结点,然后将记录插入其中,此时这个叶子结点也是根结点,插入操作结束。

    2)针对叶子类型结点:根据key值找到叶子结点,向这个叶子结点插入记录。插入后,若当前结点key的个数小于等于m-1,则插入结束。否则将这个叶子结点分裂成左右两个叶子结点,左叶子结点包含前m/2个记录,右结点包含剩下的记录,将第m/2+1个记录的key进位到父结点中(父结点一定是索引类型结点),进位到父结点的key左孩子指针向左结点,右孩子指针向右结点。将当前结点的指针指向父结点,然后执行第3步。

    3)针对索引类型结点:若当前结点key的个数小于等于m-1,则插入结束。否则,将这个索引类型结点分裂成两个索引结点,左索引结点包含前(m-1)/2个key,右结点包含m-(m-1)/2个key,将第m/2个key进位到父结点中,进位到父结点的key左孩子指向左结点, 进位到父结点的key右孩子指向右结点。将当前结点的指针指向父结点,然后重复第3步。

    下面是一颗5阶B树的插入过程,5阶B数的结点最少2个key,最多4个key。


    a)空树中插入5

    clip_image041


    b)依次插入8,10,15

    clip_image043


    c)插入16

    clip_image045

    插入16后超过了关键字的个数限制,所以要进行分裂。在叶子结点分裂时,分裂出来的左结点2个记录,右边3个记录,中间key成为索引结点中的key,分裂后当前结点指向了父结点(根结点)。结果如下图所示。

    clip_image047

    当然我们还有另一种分裂方式,给左结点3个记录,右结点2个记录,此时索引结点中的key就变为15。


    d)插入17

    clip_image049


    e)插入18,插入后如下图所示

    clip_image051

    当前结点的关键字个数大于5,进行分裂。分裂成两个结点,左结点2个记录,右结点3个记录,关键字16进位到父结点(索引类型)中,将当前结点的指针指向父结点。

    clip_image053

    当前结点的关键字个数满足条件,插入结束。


    f)插入若干数据后

    clip_image055


    g)在上图中插入7,结果如下图所示

    clip_image057

    当前结点的关键字个数超过4,需要分裂。左结点2个记录,右结点3个记录。分裂后关键字7进入到父结点中,将当前结点的指针指向父结点,结果如下图所示。

    clip_image059

    当前结点的关键字个数超过4,需要继续分裂。左结点2个关键字,右结点2个关键字,关键字16进入到父结点中,将当前结点指向父结点,结果如下图所示。

    clip_image061

    当前结点的关键字个数满足条件,插入结束。

     

    2.3 B+树的删除操作

    如果叶子结点中没有相应的key,则删除失败。否则执行下面的步骤

    1)删除叶子结点中对应的key。删除后若结点的key的个数大于等于Math.ceil(m-1)/2 – 1,删除操作结束,否则执行第2步。

    2)若兄弟结点key有富余(大于Math.ceil(m-1)/2 – 1),向兄弟结点借一个记录,同时用借到的key替换父结(指当前结点和兄弟结点共同的父结点)点中的key,删除结束。否则执行第3步。

    3)若兄弟结点中没有富余的key,则当前结点和兄弟结点合并成一个新的叶子结点,并删除父结点中的key(父结点中的这个key两边的孩子指针就变成了一个指针,正好指向这个新的叶子结点),将当前结点指向父结点(必为索引结点),执行第4步(第4步以后的操作和B树就完全一样了,主要是为了更新索引结点)。

    4)若索引结点的key的个数大于等于Math.ceil(m-1)/2 – 1,则删除操作结束。否则执行第5步

    5)若兄弟结点有富余,父结点key下移,兄弟结点key上移,删除结束。否则执行第6步

    6)当前结点和兄弟结点及父结点下移key合并成一个新的结点。将当前结点指向父结点,重复第4步。

    注意,通过B+树的删除操作后,索引结点中存在的key,不一定在叶子结点中存在对应的记录。

    下面是一颗5阶B树的删除过程,5阶B数的结点最少2个key,最多4个key。


    a)初始状态

    clip_image063


    b)删除22,删除后结果如下图

    clip_image065

    删除后叶子结点中key的个数大于等于2,删除结束


    c)删除15,删除后的结果如下图所示

    clip_image067

    删除后当前结点只有一个key,不满足条件,而兄弟结点有三个key,可以从兄弟结点借一个关键字为9的记录,同时更新将父结点中的关键字由10也变为9,删除结束。

    clip_image069


    d)删除7,删除后的结果如下图所示

    clip_image071

    当前结点关键字个数小于2,(左)兄弟结点中的也没有富余的关键字(当前结点还有个右兄弟,不过选择任意一个进行分析就可以了,这里我们选择了左边的),所以当前结点和兄弟结点合并,并删除父结点中的key,当前结点指向父结点。

    clip_image073

    此时当前结点的关键字个数小于2,兄弟结点的关键字也没有富余,所以父结点中的关键字下移,和两个孩子结点合并,结果如下图所示。

    clip_image075

     

    3.参考内容

    [1] B+树介绍

    [2] 从MySQL Bug#67718浅谈B+树索引的分裂优化

    [3] B+树的几点总结

     

    转自https://www.cnblogs.com/nullzx/p/8729425.html

    展开全文
  • B-树的插入过程

    千次阅读 多人点赞 2018-12-27 21:08:12
    上文...插入过程和树的构建过程本质是一致的,即都是进行插入操作,并对插入后的B-树进行调整。 我们设定B-树的阶为5。用关键字序列{1,2,6,7,11,4,8,13,10,5,17,9,16,20,3,12,14,18,19...
  • 最小堆 构建、插入、删除的过程图解

    万次阅读 多人点赞 2016-05-21 00:47:02
    最小堆的构建、插入、删除的过程。搞懂最小堆的相应知识后,最大堆与此类似。 2.最小堆示例 3.最小堆的构建  初始数组为:9,3,7,6,5,1,10,2  按照完全二叉树,将数字依次填入。  填入后,找到最后一个...
  • 直接插入排序讲解及代码实现

    千次阅读 2019-03-10 20:04:15
    每一步将一个待排序的元素,按其排序码的大小,插入到前面已经排好序的一组元素的合适位置上去,直到元素全部插完为止。 当插入第i(i&amp;amp;gt;=1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好序...
  • 1.Intsert简写方式插入数据 1.先看一下表中有那些数据 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190703111342249.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0...
  • string插入和删除

    千次阅读 2019-07-03 13:43:03
    string插入和删除 对string字符串进行插入和删除字符操作 函数原型: string& insert(int pos, const char* s); //插入字符串 string& insert(int pos, const string& str); //插入字符串 string&...
  • 图片的插入(JLable)

    2020-07-23 13:28:48
    import java.awt.Container; import java.awt.Image; import java.net.URL; import javax.swing.*; public class Main extends JFrame{ public Main() { setBounds(200, 200, 500, 500);//设置窗体坐标和大小 ...
  • (1)通过mybatis插入数据库,插入数据,显示插入成功,查询数据库,发现并未插入成功。通过日志可看到原因为:插入的语句回滚连接数据库了,导致插入失败。(2)应加入commit语句,手动执行提交事件,将数据提交到...
  • 我们经常需要进行sql的批量插入,要求:该条记录不存在则插入,存在则不插入。如果使用一条INSERT语句实现呢?对于普通的 INSERT 插入,如果想要保证不插入重复记录,我们只有对某个字段创建唯一约束实现;那有没有...
  • confluence插入代码框以及格式设置

    万次阅读 2018-09-27 15:23:26
    "RDark"主题
  • java实现插入排序(思路和实现)

    万次阅读 多人点赞 2018-06-06 15:31:31
    插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入插入排序在实现上,在从后向前扫描过程中,需要...
  • java分批量插入数据(数据量太大)

    万次阅读 2018-03-27 18:01:33
    1、需求:数据量过大,并且要经常进行插入操作: 分批插入,每次插入600条数据!public void insertList(List&lt;Student&gt; list) { int insertLength = list.size(); int i = 0; while (insertLength...
  • 当我们进行测试数据或者进行某种大数据量的时候,可以用一下语句进行大批量插入, 通过我的测试,10万条数据插入时间为7秒左右,100万条记录插入时间为65秒,200万插入为150秒。 我机器配置为 CPU I5 2450M 内存4G...
  • 如何优雅地在 microsoft word 插入代码块

    万次阅读 多人点赞 2014-06-26 12:41:24
    如何优雅地在 microsoft word 插入代码块
  • sql中的单条出入与批量插入效率比较
  • JS 字符串固定位置插入字符

    万次阅读 2018-08-30 11:54:04
    //为字符串插入字符 其中soure为原字符串,start为将要插入字符的位置,newStr为要插入的字符 function insertStr(soure, start, newStr){ return soure.slice(0, start) + newStr + soure.slice(start); } ...
1 2 3 4 5 ... 20
收藏数 2,472,895
精华内容 989,158
关键字:

插入