一、求数组的最大值,最小值,总和,平均值
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("很遗憾,没有找到"); } } }