• 11.数组二


    一、数组的工具类

    package com.atguigu.java;
    
    import java.util.Arrays;
    
    /*
     * java.util.Arrays:操作数组的工具类,里面定义了很多操作数组的方法
     * 
     * 
     */
    public class ArraysTest {
        public static void main(String[] args) {
            
            //1.boolean equals(int[] a,int[] b):判断两个数组是否相等。
            int[] arr1 = new int[]{1,2,3,4};
            int[] arr2 = new int[]{1,3,2,4};
            boolean isEquals = Arrays.equals(arr1, arr2);
            System.out.println(isEquals);//false
            
            //2.String toString(int[] a):输出数组信息。
            System.out.println(Arrays.toString(arr1));
            
                
            //3.void fill(int[] a,int val):将指定值填充到数组之中。
            Arrays.fill(arr1,10);
            System.out.println(Arrays.toString(arr1));
            
    
            //4.void sort(int[] a):对数组进行排序。
            Arrays.sort(arr2);
            System.out.println(Arrays.toString(arr2));
            
            //5.int binarySearch(int[] a,int key)
            int[] arr3 = new int[]{-98,-34,2,34,54,66,79,105,210,333};
            int index = Arrays.binarySearch(arr3, 210);
            if(index >= 0){
                System.out.println(index);
            }else{
                System.out.println("未找到");
            }
            
            
        }
    }

    二、数组中的相关算法

    package com.atguigu.java;
    /*
     * 算法的考查:求数值型数组中元素的最大值、最小值、平均数、总和等
     * 
     * 定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,
     * 然后求出所有元素的最大值,最小值,和值,平均值,并输出出来。    
     * 要求:所有随机数都是两位数。
     * 
     * [10,99]
     * 公式:(int)(Math.random() * (99 - 10 + 1) + 10)
     * 
     */
    public class ArrayTest1 {
        public static void main(String[] args) {
            int[] arr = new int[10];
            
            for(int i = 0;i < arr.length;i++){
                arr[i] = (int)(Math.random() * (99 - 10 + 1) + 10);
            }
            
            //遍历
            for(int i = 0;i < arr.length;i++){
                System.out.print(arr[i] + "	");
            }
            System.out.println();
            
            //求数组元素的最大值
            int maxValue = arr[0];
            for(int i = 1;i < arr.length;i++){
                if(maxValue < arr[i]){
                    maxValue = arr[i];
                }
            }
            System.out.println("最大值为:" + maxValue);
            
            //求数组元素的最小值
            int minValue = arr[0];
            for(int i = 1;i < arr.length;i++){
                if(minValue > arr[i]){
                    minValue = arr[i];
                }
            }
            System.out.println("最小值为:" + minValue);
            //求数组元素的总和
            int sum = 0;
            for(int i = 0;i < arr.length;i++){
                sum += arr[i];
            }
            System.out.println("总和为:" + sum);
            //求数组元素的平均数
            int avgValue = sum / arr.length;
            System.out.println("平均数为:" + avgValue);
        }
    }
    package com.atguigu.java;
    /*
     * 算法的考查:数组的复制、反转、查找(线性查找、二分法查找)
     * 
     * 
     */
    public class ArrayTest2 {
        
        public static void main(String[] args) {
            
            String[] arr = new String[]{"JJ","DD","MM","BB","GG","AA"};
            
            
            //数组的复制(区别于数组变量的赋值:arr1 = arr)
            String[] arr1 = new String[arr.length];
            for(int i = 0;i < arr1.length;i++){
                arr1[i] = arr[i];
            }
            
            //数组的反转
            //方法一:
    //        for(int i = 0;i < arr.length / 2;i++){
    //            String temp = arr[i];
    //            arr[i] = arr[arr.length - i -1];
    //            arr[arr.length - i -1] = temp;
    //        }
            
            //方法二:
    //        for(int i = 0,j = arr.length - 1;i < j;i++,j--){
    //            String temp = arr[i];
    //            arr[i] = arr[j];
    //            arr[j] = temp;
    //        }
            
            //遍历
            for(int i = 0;i < arr.length;i++){
                System.out.print(arr[i] + "	");
            }
            
            System.out.println();
            //查找(或搜索)
            //线性查找:
            String dest = "BB";
            dest = "CC";
            
            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("很遗憾,没有找到的啦!");
                
            }
            //二分法查找:(熟悉)
            //前提:所要查找的数组必须有序。
            int[] arr2 = new int[]{-98,-34,2,34,54,66,79,105,210,333};
            
            int dest1 = -34;
            dest1 = 35;
            int head = 0;//初始的首索引
            int end = arr2.length - 1;//初始的末索引
            boolean isFlag1 = true;
            while(head <= end){
                
                int middle = (head + end)/2;
                
                if(dest1 == arr2[middle]){
                    System.out.println("找到了指定的元素,位置为:" + middle);
                    isFlag1 = false;
                    break;
                }else if(arr2[middle] > dest1){
                    end = middle - 1;
                }else{//arr2[middle] < dest1
                    head = middle + 1;
                }
    
                
            }
            
            if(isFlag1){
                System.out.println("很遗憾,没有找到的啦!");
            }
            
            
        }
    }
  • 相关阅读:
    自定义图标集
    微软Power BI 每月功能更新系列——Power BI 9月版本功能更新全面解读
    使用Power BI中的假设参数控制表视觉中要显示的行数
    如何使用Power Query自动存储最近2年的数据
    vscode-常用快捷键
    微信小程序开发-入门到熟练(wepy-初级篇)
    vscode-函数注释插件-正则插件
    vscode 编写Markdown文件
    wepy-开发总结(功能点)
    常用git命令
  • 原文地址:https://www.cnblogs.com/xingqisan/p/12114205.html
Copyright © 2020-2023  润新知