数组加强和Arrays工具类

数组操作 冒泡排序

假定数组中第一个值最大 依次和后面的值做比较 如果前面的值比后面的大,则前面的值和后面的值交换位置
//冒泡排序 int[] arr={12,3.5,8,2,15}; // public static int[] maoPao(int[] arr){ int change; //定义变量 for(int j=0; jarr[i+1]){//当前面的元素的值大于后一位的,互换值 change = arr[i]; arr[i] = arr[i+1]; arr[i+1] = change; } } } }

二分搜索
使用的前提是:被查找的数组中的元素必须是有序的
/* 1.定义一个方法,名字为binarySearch(int ele,int[] src) 2.先查找数组中间位置(索引)出的元素和ele比较 3.定义三个变量 最小索引 minIndex 最大索引maxIndex 中间索引 (minIndex + maxIndex) / 2 4.比较判断确定范围 */ //定义最大索引,最小索引,中间索引 public static int mappao(int a,int[] arr){ int maxIndex=arr.length-1; int minIndex=0; int midIndex=(maxIndex+minIndex)/2; //判断条件确定 while(minInndex<=maxIndex){ if(a==arr[midIndex]){//a的值等于中间索引对应的元素的值 return midIndex; } else if(a>arr[midIndex]){//a的值大于中间索引对应的元素的值 minIndex=midIndex+1; } else{//a的值小于中间索引对应的元素的值 maxIndex=midIndex-1; } midIndex=(maxIndex+minIndex)/2; } return -1; }

二维数组
  • 数组是一个引用数据类型
  • 遍历方式和一般数组一样
//创建方式(这里是把int[]看做一个数据类型) //数据类型[] 数组名=new 数据类型[] //动态打印 int[][] arr=new int[长度][]; //长度是二维数组里数组的个数 例如: int[][] arr=new int[2][3]; //2代表的是二维数组的长度 3代表的是元素数组的长度 //静态打印 int[][] arr={{2,1},{4,3}}

Arrays工具类
Java已经帮我们写了的,比较具有代表性的 Arrays工具类,我们可以直接调用
//调用语法 java.util.Arrays.方法名()

注意
  • 查询工具类中的方法
  • 常用的方法 参数类型 返回值
增强for循环
【数组加强和Arrays工具类】增强for循环(foreach) 没有索引,凡是涉及有索引相关操作还是用普通for循环
//语法结构 for(数据类型 变量名:源){//源指的是要遍历的数组或集合 执行语句; }

可变参数
//语法结构 数据类型...变量名 int...a;

  • 其实本质上也是一个数组
  • 使用可变参数 像遍历数组一样遍历
  • 可以传0或者多个同类型的参数
  • 可变参数只能放在参数列表的末尾

    推荐阅读