数组扩容以及优化的冒泡排序法

关于数组扩容

,我们通常用到的地方可能就是关于对于数组的处理,比如对于指定的索引位置,我们需要删除这个元素,也有可能就是增加元素,那么在增加元素的过程中,原数组的大小已经固定,我们就需要对其进行扩容。
在这里我们封装一个方法,可在main中调用(实际这个方法在之前并没有进行封装处理,为了测试其他元素故进行封装处理)

在这里插入图片描述

然后我再调用,这里我们可以看到,扩容的本质其实就是重新定义一个对象数组,在之前的length加上需要的大小
在这里插入图片描述

下面关于是冒泡排序方法

的优化处理,我们知道,冒泡方法的原理就是逐一比较大小在这里直接给出代码,进行解释
在这里插入图片描述
在这里,我们看到是j<a,lengthj-1-i,那么为什么减去i,原因是因为我们可以省略重复的比较步骤,比如说,在算法的某一步我们已经得到2,1,0,4,5,6,但是由于算法的问题这一个步骤会重复处理,我们在之前的for循环定义的i减去之后便可以省略。

另外还有一个优化的问题就是在这行代码的前面,我们定义了一个boolean类型的变量f,这个和为什么减去i类似,不过解释起来更容易,比如说我们已经将0123456排序好但是这是i并没有到最大值,由于算法的问题,计算机仍然需要将i的值处理到i<a.length-1为止,我们定义的这个boolean类型的f,原理是如果检测到有进行交换,那么此时f的值为false,如果检测到f的值为true,也就是没有交换,那么我们就break,结束循环推出。

关于这两个方面的优化,解释的有不到位的地方请谅解,大家尽量手动敲敲代码试试看,随机定义一个数组,然后将代码这样写进行一下比较就能体会到了。下面为测试没有优化的冒泡排序法的代码

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43229819/article/details/83041738