数组练习题

点击跳转到数组笔记

(一) 求最值

需求: 已知数组元素为 {33 ,5 ,22 ,44 ,55}, 请找出数组中最大值并打印在控制台

public class Demo3 {
    public static void main(String[] args) {
        int arr[] = {33, 5, 22, 44, 55};
        int max = arr[1];//不可以初始化为 0: 假如数组中全是负数, 那么最终输出会为 0.
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] > max) {
                max = arr[i];
            }
        }
        System.out.println(max);
    }
}

输出: 55
    
改为增强 for 循环:
    	for (int j : arr) {
            if (j > max) {
                max = j;
            }
        }

//💌输出: 55

优化:

循环中的第一次比较本质上是 arr[i] 自己和自己比较, 没有意义.

故可以把最开始比较的元素改成第二个元素 arr[2], 减少一次比较.

		for (int i = 1; i < arr.length; i++) {
            if (arr[i] > max) {
                max = arr[i];
            }
        }

(二) 求和并统计个数

需求:生成10个1~100之间的随机数存入数组。

import java.util.Random;

public class homework {
    public static void main(String[] args) {

        //定义数组, 生成随机数并存入数组:
        Random r = new Random();
        int[] arr = new int[10];
        for (int i = 0; i < arr.length; i++) {//⚠️改变数组元素时不可以用 foreach!!!
            int num = r.nextInt(100) - 1;
            arr[i] = num;
        }

        //求和:
        int sum = 0;
        for (int i : arr) {
            sum = sum + i;
        }
        System.out.println("数据和 = " + sum);

        //求平均值:
        int average = sum / arr.length;
        System.out.println("平均值 = " + average);

        //求比平均值小的数的个数:
        int count = 0;
        for (int i : arr) {
            if (i < average) {
                count++;
            }
        }
        System.out.println("比平均值小的数有 " + count + " 个.");

        //检验:
        for (int i : arr) {
            System.out.print(i + " ");
        }
        System.out.println();
    }
}


(三) 交换数组中的元素

需求: 定义一个数组,存入1, 2, 3, 4, 5. 按照要求交换索引对应的元素.

交换前: 1, 2, 3, 4, 5;

交换后: 5, 4, 3, 2, 1. (依次交换首尾元素.)

public class homework1 {
    public static void main(String[] args) {
        int arr[] = {1, 2, 3, 4, 5};
        for (int i = 0; i < arr.length / 2; i++) {//循环次数为元素个数的一半.
            int temp = arr[i];//临时保存.
            arr[i] = arr[arr.length - i - 1];//交换数据. 最前的元素为 arr[1], 最后的元素为 arr[arr.length - i - 1]. (节省了另外创建一个变量的内存)
            arr[arr.length - i - 1] = temp;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}

//💌输出: 5 2 3 4 1 

(四) 打乱数组内元素顺序

需求: 定义一个数组, 存入 1~5.

要求打乱数组中所有数据的顺序.

import java.util.Random;

public class homework2 {
    public static void main(String[] args) {
        int arr[] = {1, 2, 3, 4, 5};
        Random r = new Random();
        for (int i = 0; i < arr.length; i++) {
            int randomIndex = r.nextInt(arr.length);//获取随机索引.
            //交换元素.
            int temp = arr[i];
            arr[i] = arr[randomIndex];
            arr[randomIndex] = temp;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}

注意: 为了避免出现重复, 每次随机都是以交换的形式进行的, 这样就不会出现重复.

屏幕截图 2026-04-26 014101

屏幕截图 2026-04-26 014138

屏幕截图 2026-04-26 014151

posted @ 2026-04-26 01:47  令狐澄禮  阅读(12)  评论(0)    收藏  举报