首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

编程中常见的数组应用操作

数组的常见操作

尹成课程资料及演示AAAjiaoyuwang

在程序开发中,数组的应用非常广泛,灵活地使用数组对实际开发很重要。接下来,本节将针对数组的常见操作,如数组的遍历、最值的获取、数组的排序等,进行详细地讲解。

1.数组遍历

在操作数组时,经常需要依次访问数组中的每个元素,这种操作称作数组的遍历。接下来通过一个案例来学习一下如何使用for循环来遍历数组,如文件1所示。

文件1 Example22.java

1    public class Example22 {

2        public static void main(String[] args) {

3            int[] arr = { 1, 2, 3, 4, 5 };  // 定义数组

4            // 使用for循环遍历数组的元素

5            for (int i = 0; i < arr.length; i++) {

6                System.out.println(arr[i]); // 通过索引访问元素

7            }

8        }

9    }

运行结果如图1所示。

图1 运行结果

文件1中,定义了一个长度为5的数组arr,数组角标的取值范围为0~4。由于for循环中定义的变量i的值在循环过程中为0~4,因此可以作为索引,依次去访问数组中的元素,并将元素的值打印出来。

2.数组最值

在操作数组时,经常需要获取数组中元素的最值。接下来通过一个示例来演示如何获取数组中元素的最大值,如文件2所示。

文件2 Example23.java

1    public class Example23 {

2        public static void main(String[] args) {

3            // 1、定义一个int[]数组

4            int[] arr = { 4, 1, 6, 3, 9, 8 };

5            // 2、定义变量max用于记住最大数,首先假设第一个元素为最大值

6            int max = arr[0];

7            // 3、遍历数组,查找最大值

8            for (int i = 1; i < arr.length; i++) {

9                // 比较 arr[i]的值是否大于max

10                if (arr[i] > max) {

11                    // 条件成立,将arr[i]的值赋给max

12                    max = arr[i];

13                }

14            }

15            System.out.println("数组arr中的最大值为:" + max); // 打印最大值

16        }

17    }

运行结果如图2所示。

图2 运行结果

文件2中,定义了一个临时变量max,用于记住数组的最大值。首先假设数组中第一个元素arr[0]为最大值,然后使用for循环对数组进行遍历,在遍历的过程中只要遇到比max值还大的元素,就将该元素赋值给max,这样一来,变量max就能够在循环结束时记住数组中的最大值。

3.数组排序

在操作数组时,经常需要对数组中元素进行排序。接下来讲解一种比较常见的数组排序算法——冒泡排序。所谓冒泡排序,就是不断地比较数组中相邻的两个元素,较小者向上浮,较大者往下沉,整个过程和水中气泡上升的原理相似。

接下来通过几个步骤来具体分析一下冒泡排序的整个过程,具体如下:

第1步,从第一个元素开始,将相邻的两个元素依次进行比较,直到最后两个元素完成比较。如果前一个元素比后一个元素大,则交换它们的位置。整个过程完成后,数组中最后一个元素自然就是最大值,这样也就完成了第一轮比较。

第2步,除了最后一个元素,将剩余的元素继续进行两两比较,过程与第一步相似,这样就可以将数组中第二大的数放在了倒数第二个位置。

第3步,以此类推,持续对越来越少的元素重复上面的步骤,直到没有任何一对元素需要比较为止。

了解了冒泡排序的原理之后,接下来通过一个案例来实现冒泡排序,如文件3所示。

文件3 Example24.java

1    public class Example24 {

2        public static void main(String[] args) {

3            int[] arr = { 9, 8, 3, 5, 2 };

4            // 1、冒泡排序前,先循环打印数组元素

5            for (int i = 0; i < arr.length; i++) {

6                System.out.print(arr[i] + " ");

7            }

8            System.out.println(); // 用于换行

9            // 2、进行冒泡排序

10            // 2.1、外层循环定义需要比较的轮数(两数对比,要比较n-1轮)

11            for (int  i= 1; i < arr.length; i++) {

12                // 2.2、内层循环定义第i轮需要比较的两个数

13                for (int j = 0; j < arr.length -i; j++) {

14                    if (arr[j] > arr[j + 1]) { // 比较相邻元素

15                        // 下面的三行代码用于相邻两个元素交换

16                        int temp = arr[j];

17                        arr[j] = arr[j + 1];

18                        arr[j + 1] = temp;

19                    }

20                }

21            }

22            // 3、完成冒泡排序后,再次循环打印数组元素

23            for (int i = 0; i < arr.length; i++) {

24                System.out.print(arr[i] + " ");

25            }

26        }

27    }

运行结果如图3所示。

图3 运行结果

文件3中,第2步通过一个嵌套for循环实现了冒泡排序。其中,外层循环用来控制进行多少轮比较,每一轮比较都可以确定一个元素的位置,由于最后一个元素不需要进行比较,因此外层循环的次数为arr.length-1;内层循环的循环变量用于控制每轮进行比较的相邻的两个数,它被作为角标去比较数组的元素,由于变量在循环过程中是自增的,这样就可以实现相邻元素依次进行比较,在每次比较时,如果前者小于后者,就交换两个元素的位置,具体执行过程如图4所示。

图4 冒泡排序

从图4可以看出,在第一轮比较中,第一个元素“9”为最大值,因此它在每次比较时都就会发生位置的交换,最终被放到最后一个位置;第二轮比较与第一轮过程类似,元素“8”被放到倒数第二个位置;第三轮比较中,第一次比较没有发生位置的交换,在第二次比较时才发生位置交换,元素“5”被放到倒数第三个位置;第四轮比较只针对最后两个元素,它们比较后发生了位置的交换,元素“3”被放到第二个位置。通过四轮比较,很明显,数组中的元素已经完成了排序。

值得一提的是,文件3中第16~18行代码实现数组中两个元素交换的过程。首先定义了一个临时变量temp用于记住数组元素arr[j]的值,然后将arr[j+1]的值赋给arr[j],最后再将temp的值赋给arr[j+1],这样便完成了两个元素的交换。整个交换过程如图5所示。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210114A0ADP500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券