插入算法(笔记)
插入算法,顾名思义,是需要往原数组中进行插入新的数组元素来进行的一种操作。而这种操作,有两种方式来执行,逻辑顺序不同,也导致了难易度不同。分别是:
方式一:先找到并确定位置,然后在这个位置上插入需要插入的数;
方式二:先将数插入到数组中,然后再通过移动位置来达到目的;
今天,我主要来讲先确定位置并移动数组中的数,然后将数插入的方法。
需要注意的是,数组在最开始经历过声明和定义以后,其大小就无法改变了,但是如果需要达到插入的目的,那显然会使得数组无法容纳多出来的一个数。那么要怎么避免这种情况出现呢?
其实很简单的一个方法就能实现这个目的。下面我们通过一个例子来加以说明:
可以看到例子中,其实我们是需要往数组{99,82,85,60,63}中插入一个数的,但是一个长度为五的数组显然无法成为一个长度为6的数组,于是,我们一开始就可以将这个数组定义成长度为六的一个数组,此处先把一个零放在多余的位置上充数。
下一步就是先进行一个简单的排序,可以用Arrays.sort的方法将数组以升序的方式排一下序。
接下来我们在输入了想要插入的数以后就要开始寻找这个数应该所在的位置了,我们在此处用index这个参数来帮助我们记录储存找到的位置。
通过循环语句,将score数组中的元素,从下标为0开始逐个向上找着我们的插入数去比大小,如果插入数大就继续往后比,直到遇到一个比插入数大的。那么此时,用index来记录这个比它大的元素的下标数,插入数插入位置的下标就理所当然的是index-1;
然后,从数组的index-1开始到下标为0为止的所有数组元素都向左移动一位,然后再通过赋值的方式把输入数赋值到index-1的位置。如此这般就完成了一个数的插入。