5.数组的最大、最小、过滤重复

170 阅读2分钟

一.数组的最大、最小、过滤重复

1.数组的最大值

  1. 定义一个变量存放最大值,假设数组中的第一个元素为该变量的初始值
  2. 该变量跟数组中的其他数进行比较,如果遇到比该值更大的就重新赋值
  3. 比较完之后,最后该变量里存放的就是数组中的最大值

代码:

package com.huaweiyun.array;
​
/**
 * 数组的最大值
 */
public class ArrayDemo05 {
    public static void main(String[] args) {
        int[] arr = {12, 34, 56, 3, 45, 23};
        int max = arr[0];
        for (int i = 1; i < arr.length; i++){
            if (max < arr[i])
            {
                max = arr[i];
            }
        }
        System.out.println(max);
    }
}

2.数组的最小值

代码:

package com.huaweiyun.array;
​
/**
 * 数组的最小值
 */
public class ArrayDemo06 {
    public static void main(String[] args) {
        int[] arr = {12, 34, 56, 3, 45, 23};
        int min = arr[0];
        for (int i = 1; i < arr.length; i++){
            if (min > arr[i])
            {
                min = arr[i];
            }
        }
        System.out.println(min);
    }
}

3.数组的过滤重复

  1. 去掉数组中重复的元素,给每个元素一个标记,每个元素跟数组中其他元素进行比较,如果完全相同就改变原有的标记
  2. 将没有改变的元素重新放入一个新的数组,并统计其个数
  3. 最终将新数组的数据复制到另一一个新的数组中

System.arraycopy()方法可以实现数组的复制

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

  • src 源数组
  • srcPos 源数组中的起始位置
  • dest 目标数组
  • descPos 目标数组中的起始位置
  • length 要复制的数组元素的数量

代码

package com.huaweiyun.array;
​
/**
 * 过滤重复
 */
public class ArrayDemo07 {
    public static void main(String[] args) {
        int[] arr = {12, 34, 45, 12, 67, 34, 45};
        // 定义一个新的数组用来存放没有重复的数
        int[] tempArr = new int[arr.length];
        int t = 0; // 表示没有重复的元素个数
        // 遍历数组
        for (int i = 0; i < arr.length; i++) {
            boolean flag = true;// 给每个元素一个初始标记
            // 每个元素跟后面的元素进行比较,如果后面有相同的就表示重复了,改变标记
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[i] == arr[j]){
                    // 改变标记
                    flag = false;
                    break;
                }
            }
            // 统计没有改变标记的元素就是没有重复的元素
            if(flag == true){
                // 将没有重复的元素放入新的数组中
                tempArr[t] = arr[i];
                // 统计没有重复的元素个数
                t++;
            }
​
        }
        // 在创建一个数组,用来只存放过滤后的元素
        int[] newArr = new int[t];
        // 将tempArr中的非0的元素复制到newArr数组中
        System.arraycopy(tempArr,0,newArr,0,t);
        // 输出newArr数组中的元素
        for (int i = 0; i < newArr.length; i++) {
            System.out.println(newArr[i]);
        }
    }
}