Java小白自学11:一维数组应用

        昨天我们梳理了一维数组的基本概念、组成以及如何定义,今天我们就进入实例,通过不同的例子来加深对一维数组的理解。接下来我们通过4个例子,来整理一下一维数组的一些注意事项以及解题思路。

        一、遍历数组

int[ ] arr = new int[ ]{1,8,15,6,2,43,37};

        所谓遍历数组,就是将数组中的元素依次输出,整除情况下,我们通过System.out.print也是可以一个元素一个元素的数组,这是是不是比较麻烦,尤其是元素较多的情况下,显然没有办法使用这个办法,这个时候就可以通过for循环来输出

        二、获取最大值,最小值

int[ ] arr = new int[ ]{1,8,15,6,2,43,37};

                1.思路:可以看到这里定义了一个长度为7的int类型数组,目的是求最大值,既然是最大值,肯定是需要比较的,两两比较才能其中一个最大值,然后再将得到的最大值与第三个值比较,这样一直比到数组的最后一位,就可以得到最大值。两两比较这是一个重复的行为,因此可能是需要使用循环。

                2.注意事项:

                        1)我们既然要比较,我们就可以假设一个元素为最大值,如果另一个元素比这个元素的值大,就将这个元素的值赋值给存储这个最大值的变量。

                        2)do-while,while,for循环,三个循环我们如何选择?根据使用区别,一般在知道循环范围的情况下,用for循环最好。

                        3)数组的长度如何定义?这里的例题中我们的长度是7,可以数出来,那么如果其他的数组元素有很多,我们还能一个一个数吗?显然不能。这里我们用下属这个式子代替数组的长度,比如上述的例题中,arr.length就是7。

数组名.length(arr.length)

        接下来我们来看看具体的代码:

        三、升序(冒泡排序)

int[ ] arr = new int[ ]{16,25,9,90,23};

        升序就是将数组中的元素按照从小到大依次排序,意思就是要求原数组重新排列里面的元素,结果是

int[ ] arr = {9,16,23,25,90};

                1.思路:我们可以每一次选择最大的一个数放在最后。

                2.注意事项:       

                        1)这里与之前的最大值相似但不同,求最大值只需要求出这个元素的值,而在这里需要将最大值放在最后一位,因此需要将元素的值进行互换,这就涉及到之前所说的如何将两个变量的值进行交换,借助一个空变量就可以实现。

                        2)注意这里的循环,这里不仅仅需要每一轮选择一个最大值,而选择最大值的这个过程是不是在不断的进行比较,因此这也是一个循环,每两两元素之间要依次进行比较,所以这里是一个嵌套循环,这就需要关注两个循环的初始值和循环条件。

        这里我们就以第一轮为例:

                第一次:16和25比较,后者数大,不用交换

                第二次:25和9比较,前者数大,互换数据

                第三次:25和90比较,后者数大,不用交换

                第四次:90和23比较,前者数大,呼唤数据

        由此可以看出第一轮需要进行四次比较,一旦前面的数比后面的数大,就要交换数据,第一轮选择完一个最大数据在最后之后,我们进行第二轮比较,第二轮由于只有4个数,因此只要比较三次,第三轮比较2次,第四轮比较1次,可以得出5个元素需要4轮。

         这里涉及到嵌套for循环,我们之前通过双重for循环输出图形的时候,有说过内存循环控制列数,外层循环控制行数,外循环执行一次,内循环需要执行一遍。这里通过对比,我们是不是可以将外循环看成轮数,内循环看成每轮的次数,我们可以看出轮数和次数的关系是不是相加等于5,而这里的5是不是就是我们的数组长度,由此我们可以得到i和j之间的关系

        四、插入(删除)数值

       例题:有一组学员的成绩{99,85,82,63, 60},将它们按降序排列。要增加一个学员的成绩,将它插入成绩序列,并保持降序

        1.思路:将设我们需要插入的成绩为83,这里通过比较我们是不是可以知道83应该放在数组中的第三个元素,而后将后面的数组元素依次向后移动一位即可

        2.注意事项:

                1)添加一位数组,数组的长度要增加1

                2)需要得到插入位置,才能将该位置上的元素及之后的元素依次向后移动一位

                3)需要将插入的数值进行赋值到插入位置上的元素

 

        这里给大家留一个问题,为什么这里进行元素位置移动时是从后往前进行循环,而不是从前向后进行循环的呢?大家可以思考思考,下次为大家进行解答!同时,删除元素与增加元素相同,大家可以自己动手试试看。

 

 

 

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值