6.数组使用:反转、工具类、冒泡排序
1 package com.atguigu.exec; 2 /* 3 * 在mian()方法中声明array1和array2两个变量,他们是int型数组 4 * 初始化array1为 2,3,5,7,11,13,17,19 5 * 显示array1的内容 6 * 赋值array2变量等于array1,修改array2中偶索引元素,使其等于索引值并打印出array1 7 * array1和array2的关系 8 * 修改题目 实现对array2对array1的复制 9 */ 10 public class ArrayDome3 { 11 public static void main(String[] args) { 12 int[] array1,array2; 13 14 array1 = new int[] {2,3,5,7,11,13,17,19}; 15 for(int i = 0;i <array1.length;i++) { 16 System.out.println(array1[i]+"\t"); 17 } 18 //赋值array2变量等于array1 将地址值赋值 而非数组的复制 19 array2 = array1; 20 /* 21 * 复制方法 22 * array2 = new int[array.length];//新的数组则必须重新new 23 * for(int i = 0; i < array.length;i++){ 24 * array2[i] = array1[i]; 25 * } 26 * 27 */ 28 for( int i = 0;i < array2.length;i++) { 29 if(i % 2 == 0) { 30 array2[i] = i; 31 } 32 } 33 34 for(int i = 0;i <array1.length;i++) { 35 System.out.println(array1[i]+"\t"); 36 } 37 38 } 39 }
反转
1 package com.atguigu.exec; 2 public class ArrayDemo4 { 3 public static void main(String[] args) { 4 String [] arr = new String[] {"aa","bb","cc","dd","jj"}; 5 6 //方法一 7 for(int i = 0;i < arr.length/2;i++) { 8 String temp = arr[i]; 9 arr[i] = arr[arr.length-i-1]; 10 arr[arr.length-i-1] = temp; 11 } 12 13 //方法二 14 for(int i = 0,j = arr.length-1;i < j;i++,j--) { 15 String temp = arr[i]; 16 arr[i] = arr[j]; 17 arr[j] = temp; 18 }
查找
1.线性查找
2.二分法查找
//前提:所查找的数组必须有序
1 boolean isFlag = true; 2 String dest = "bb"; 3 for(int i = 0;i < arr.length;i++) { 4 //判断字符是否相等:equals 5 if(dest.equals(arr[i])) { 6 System.out.println("找到,位置为:"+i); 7 isFlag = false; 8 break; 9 } 10 } 11 12 if(isFlag) { 13 System.out.println("未找到"); 14 }
//前提:所查找的数组必须有序
1 int[] arr1 = new int[] {1,4,6,8,43,48,99,100}; 2 int dest1 = 48; 3 int head = 0; 4 int end = arr1.length-1; 5 boolean isFlag1 = true; 6 7 while(head <= end) { 8 int middle = (end + head)/2; 9 if(dest1 == arr1[middle]) { 10 System.out.println("找到,位置为"+middle); 11 isFlag1 = false; 12 break; 13 }else if(middle < dest1) { 14 head = middle + 1; 15 } 16 else { 17 end = middle -1; 18 } 19 } 20 if(isFlag1) { 21 System.out.println("未找到"); 22 } 23 } 24 }
/*
* java.util.Arrays:操作数组的工具类,里面定义了很多操作数组的方法
*/
1 package com.atguigu.java; 2 import java.util.Arrays; 3 public class ArrayTest1 { 4 public static void main(String[] args) { 5 6 //1.boolean equals(int[] a, int[] b) 判断两个数组是否相等 7 int[] arr1 = new int[] {1,2,3,4}; 8 int[] arr2 = new int[] {1,3,2,4}; 9 boolean isEquals = Arrays.equals(arr1, arr2); 10 System.out.println(isEquals); 11 12 //2.String toString(int[] a):输出数组信息 13 System.out.println(Arrays.toString(arr2)); 14 15 //3.void fill(int[] a,int val):将指定值填充到数组中 16 Arrays.fill(arr1,10); 17 System.out.println(Arrays.toString(arr1)); 18 19 //4.void sort(int[] a):对数组进行排序 20 Arrays.sort(arr2); 21 System.out.println(Arrays.toString(arr2)); 22 23 //5.int binarySearch(int[] a, int key)//二分查找 24 int[] arr3 = new int[] {-98,-34,2,34,54,66,79,105,210,333}; 25 int index = Arrays.binarySearch(arr3, 79); 26 if(index >= 0) { 27 System.out.println(index); 28 }else { 29 System.out.println("未找到"); 30 } 31 } 32 }
/*
*数值型数组中元素、最大值、最小值、平均值、总和
*/
1 package com.atguigu.exec; 2 public class ArrayDemo2 { 3 public static void main(String[] args) { 4 int[] arr = new int[10]; 5 6 for(int i = 0;i < arr.length;i++) { 7 arr[i] = (int)(Math.random()*(99-10+1)+10); 8 } 9 10 int maxValue = arr[0]; 11 for(int i = 1;i < arr.length;i++) { 12 if(arr[i]>maxValue) { 13 maxValue = arr[i]; 14 } 15 } 16 17 int minValue = arr[0]; 18 for(int i = 1;i < arr.length;i++) { 19 if(arr[i] < minValue) { 20 minValue = arr[i]; 21 } 22 } 23 24 int sum = 0; 25 for(int i = 0;i < arr.length;i++) { 26 sum += arr[i]; 27 } 28 29 int avgValue = sum / arr.length; 30 } 31 32 }
排序
/*
* 数组的冒泡排序
*/
1 package com.atguigu.java; 2 public class BubbleSort { 3 public static void main(String[] args) { 4 5 int[] arr = new int[] {43,32,76,-98,0,64,33,11}; 6 for(int i = 0; i < arr.length - 1;i++) { 7 for(int j = 0; j < arr.length -1-i;j++) { 8 if(arr[j] > arr[j+1]) { 9 int temp = arr[j]; 10 arr[j] = arr[j+1]; 11 arr[j+1] = temp; 12 } 13 } 14 } 15 for(int i = 0;i < arr.length;i++) { 16 System.out.println(arr[i]); 17 } 18 19 } 20 }
虽不能至,心向往之