Java之数组的遍历、最大值、最小值、、总和、平均值、数组的复制,反转,查找(线性查找、二分法查找)

一、求数组的最大值,最小值,总和,平均值

public class ArrayUtil {
    public static void main(String[] args) {
        ArrayUtil arrayUtil = new ArrayUtil();
        int[] arr = new int[]{23,25,52,34,-5,99,82,0,56,9,46};
        int max = arrayUtil.getMax(arr);
        System.out.println("数组中的最大值为:"+max);

        int min =arrayUtil.getMin(arr);
        System.out.println("数组中的最小值为:"+min);

        int sum =arrayUtil.getSum(arr);
        System.out.println("数组的元素总和为:"+sum);

        int avg =arrayUtil.getAvg(arr);
        System.out.println("数组的元素平均值为:"+avg);

        arrayUtil.printArray(arr);

    }


    //求数组的最大值
    public int getMax(int[] arr){
        int maxValue = arr[0];
        for (int i=1;i<arr.length;i++){
            if (maxValue<arr[i]){
                maxValue = arr[i];
            }
        }
        return maxValue;
    }

    //求数组的最小值
    public int getMin(int[] arr){
        int minValue = arr[0];
        for (int i=1;i<arr.length;i++){
            if (minValue>arr[i]){
                minValue = arr[i];
            }
        }
        return minValue;
    }

    //数组的总和
    public int getSum(int[] arr){
        int sum = 0;
        for (int i=0;i<arr.length;i++){
            sum +=arr[i];
        }
        return sum;
    }

    //求数组平均值
    public int getAvg(int[] arr){
        return getSum(arr) /arr.length;
    }

    //遍历数组
    public void printArray(int[] arr){
        System.out.print("[");
        for (int i=0;i<arr.length;i++){
            System.out.print(arr[i]);
            if (i<arr.length-1){
                System.out.print(",");
            }
        }
        System.out.print("]");
    }
}

二、数组的复制

注意:此复制不是赋值,是数组元素的复制

public class Hello {
    public static void main(String[] args){
        String[] arr = new String[]{"jj","DD","MM","BB","GG","AA"}; //源数组

        String[] arr1 = new String[arr.length];  //目标数组
        //数组的复制(区别于数组变量的赋值arr1=arr)
        for(int i=0;i<arr1.length;i++){
            arr1[i] = arr[i];    //将源数组的元素逐一复制到目标数组
        }
        //遍历查看结果
        for (int i=0;i<arr1.length;i++){
            System.out.print(arr1[i]+" ");
        }

    }
}

三、数组的反转

什么是反转?就是将数组元素倒过来排列

思考:就是将最后一个元素排在第一位,将倒数第二个元素排在第二位,也就是要交换元素,那如何交换两个元素?
假如有两个杯子A和B,里面都装有水,如何将A杯、B杯子里面的水交换呢?

可以找第三个杯子C,先将B杯子里面的水倒入C中,B杯子已经空了,再将A杯子里面的水倒入B杯子,最后将C杯子里面的水倒入A杯子

//数组的反转
public class Hello {
    public static void main(String[] args){
        String[] arr = new String[]{"jj","DD","MM","BB","GG","AA"};

        for (int i=0;i< arr.length/2;i++){  //注意终止交换条件是除以2
            String temp = arr[i];       //temp变量相当于找的第三个杯子
            arr[i] =arr[arr.length-i-1];
            arr[arr.length-i-1]=temp;
        }
        //查看结果
        for (int i=0;i<arr.length;i++){
            System.out.print(arr[i]+" ");
        }
    }
}

四、数组的查找

线性查找

//数组的线性查找
public class Hello {
    public static void main(String[] args){
        String[] arr = new String[]{"jj","DD","MM","BB","GG","AA"};

        String dest = "dD";
        boolean isFlag = true;
        //查看结果
        for (int i=0;i<arr.length;i++){
            if (dest.equals(arr[i])){
                System.out.println("找到指定的元素为:"+i);
                isFlag = false;
                break;
            }
        }
        if (isFlag){
            System.out.println("没有找到指定的元素");
        }
    }
}

二分法查找

前提:所要查找的数组必须有序

//数组的二分法查找
public class Hello {
    public static void main(String[] args){

        int[] arr = new int[]{-98,-34,2,32,46,85,95,129};
        int dest = 2;
        boolean isFlag=true;
        int head = 0; //初始索引
        int end =arr.length-1;//初始末索引
        while (head<=end){
            int middle = (head+end)/2;
            if (dest==arr[middle]){
                System.out.println("找到指定的元素了,索引为:"+middle);
                isFlag =false;
                break;
            }else if (arr[middle]>dest){
                end = middle -1;
            }else {  //相当于arr[middle]<dest
                head = middle+1;
            }
        }
        if (isFlag){
            System.out.println("很遗憾,没有找到");
        }
    }
}

 

posted @ 2021-01-21 21:19  懒惰的咸鱼  阅读(435)  评论(0编辑  收藏  举报