day_02
--暑假第二天学习--
一.数组中找最大值
1.思路:定义一个变量,用于记录最大数(默认初值为数组中第一个元素),
然后使用该变量与数组中每一个元素进行比较,如果发现有比当前元素大,
那么该变量存储这个更大的变量,直到该数组的最后一个元素为止。
2.代码如下:
class Demo1 { public static void main(String[] args) { int[] arr = {-12,-14,-5,-26,-4}; int max = getMax(arr); System.out.println("最大值:"+ max); } public static int getMax(int[] arr){ int max = arr[0]; //用于记录最大值,初值为该数组的第一个元素 for(int i = 1 ; i < arr.length ; i++){ if(arr[i]>max){ //如果发现有元素比max大,那么max变量就记录该元素。 max = arr[i]; } } return max; } }
二.数组排序
1.思路:使用索引值为0的数组元素与其他位置的元素挨个比较一次,如果发现有比索引值为0的元素大的,那么交换位置。
2.代码如下:
class Demo2{ public static void main(String[] args) { int[] arr = {12,5,17,8,9}; //对于5元素的数组,只需要找出4个最大值就可以排序了。 selectSort(arr); } public static void selectSort(int[] arr){ //把最大值放在首位置。 for(int j = 0; j<arr.length-1; j++){ // 控制的是轮数。 for(int i = j+1 ; i<arr.length ; i++){ // 找出最大值 if(arr[i]>arr[j]){ //交换位置 int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } //遍历数组,查看效果 System.out.print("目前的元素:"); for (int i = 0 ; i<arr.length ;i++){ System.out.print(arr[i]+","); } } }
三.二分法
注:使用前提必需是有序的数组。
eg: 需求:定义一个函数接收一个数组对象和一个要查找的目标元素,函数要返回该目标元素在
数组中的索引值,如果目标元素不存在数组中,那么返回-1表示。
代码如下:
class Demo3 { public static void main(String[] args) { int[] arr = {12,16,19,23,54}; //int index = searchEle(arr,23); int index = halfSearch(arr,116); System.out.println("元素所在的索引值是:"+ index); } public static int halfSearch(int[] arr, int target){ //定义三个变量分别记录最大、最小、中间的查找范围索引值 int max = arr.length-1; int min = 0; int mid = (max+min)/2; while(true){ if(target>arr[mid]){ min = mid+1; }else if(target<arr[mid]){ max = mid -1; }else{ //找到了元素 return mid; } //没有找到的情况 if (max<min){ return -1; } //重新计算中间索引值 mid = (min+max)/2; } } public static int searchEle(int[] arr, int target){ for(int i = 0 ; i<arr.length ; i++){ if(arr[i]==target){ return i; } } return -1; } }
四.二维数组
1.二维数组就是数组中的数组。
比如:
一盒 20根 一维数组
一条 10包 20根 二维数组
2.二维数组的定义格式:
数据类型[][] 变量名 = new 数据类型[长度1][长度2];
二维数组的初始化方式:
动态初始化:
数据类型[][] 变量名 = new 数据类型[长度1][长度2];
静态初始化:
数据类型[][] 变量名 = new 数据类型[长度1][长度2];
长度1:一条烟有多少盒。
长度2: 一盒烟有多少根。
二维数组的初始化方式:
动态初始化:
数据类型[][] 变量名 = new 数据类型[长度1][长度2];
静态初始化:
数据类型[][] 变量名 = {{元素1,元素2...},{元素1,元素2...},{元素1,元素2...} ..}
eg:
class Demo4{ public static void main(String[] args) { //定义了一个二维数组 int[][] arr = new int[3][4]; arr[1][1] = 100; /* System.out.println("二维数组的长度:"+ arr.length); // 3 System.out.println("二维数组的长度:"+ arr[1].length); // */ System.out.println("数组的元素:"+ arr[1][1]); } }