day18_自行封装数组操作的工具类_JAVA自带数组工具类Arrays
image.png
封装的工具类
//表示数组的工具类,涵盖了很多操作数组的方法class ArrayUtil { //交换元素 static void swap(int[] arr,int index1,int index2) { int temp = arr[index1]; arr[index1] = arr[index2]; arr[index2] = temp; } //获取数组中最大元素 static int getMax(int[] nums) { int j = nums[0];//假设数组第一个值为最大值 for (int i = 1;i < nums.length ;i ++ ) { if (nums[i] > j) { j = nums[i];//就把最大值存储在j变量中 } } return j; } //获取数组中最小元素 static int getMin(int[] nums) { int k = nums[0];//假设数组第一个值为最小值 for (int i = 1;i < nums.length ;i ++ ) { if (nums[i] < k) { k = nums[i];//就把最大值存储在k变量中 } } return k; } //打印数组 static void print(int[] arr) { //思路:先打印数组"[]",再获取arr数组里面的元素,而后再做if判断,判断假如当前i的值不是最后一个索引,则拼接 if (arr == null) { System.out.println("null"); return; } String ret = "["; for (int i = 0;i < arr.length ;i ++ ) { ret = ret + arr[i]; //假如当前i不是最后一个索引,则拼接", " if (i != arr.length - 1) { ret = ret + ", "; } } ret = ret + "]"; System.out.println(ret); } //逆序排序 static String[] reverse(String[] oldArr) { //创立一个新的数组,存储颠倒之后的元素 String[] newArr = new String [oldArr.length]; for (int i = oldArr.length - 1;i >= 0 ;i -- ) { //i = 4 newArr[0] //i = 3 newArr[1] newArr[oldArr.length - 1 - i] = oldArr[i]; } return newArr; } //二分搜索法/二分查找法/折半查找 static int binarySearch(int[] arr,int key) { int low = 0;//最小的索引 int high = arr.length - 1;//最大的索引 while (low <= high) { System.out.println(low+"----------"+high); int mid = (low + high) >> 1 ;//中间索引 int midVal = arr[mid];//将中间索引的元素赋值给变量midVal if(midVal > key)//猜大了 { high = mid - 1;//最大的索引=中间索引-1(缩小搜索范围) } else if(midVal < key)//猜小了 { low = mid + 1;//最小的索引=中间索引+1(缩小搜索范围) } else { return mid;//假如中间索引恰好=key值,就直接返回mid } } return -1;//如果说传入的元素没有在数组中,直接返回-1,表示不在该数组范围内,越界了. } //选择排序 static void selectinonSort(int[] arr) { /* //第一轮 for (int i = 1;i <= arr.length - 1 ;i ++ ) { if (arr[0] > arr[i]) { swap(arr,0,i); } } //第二轮 for (int i = 2;i <= arr.length - 1 ;i ++ ) { if (arr[1] > arr[i]) { swap(arr,1,i); } } //第三轮 for (int i = 3;i <= arr.length - 1 ;i ++ ) { if (arr[2] > arr[i]) { swap(arr,2,i); } } */ //代码增强 for (int j = 1;j <= arr.length - 1;j ++ ) { for (int i = j;i <= arr.length - 1 ;i ++ ) { if (arr[j - 1] > arr[i]) { swap(arr,j - 1,i); } } } } //冒泡排序 static void sort(int[] arr) { //代码增强 for (int i = 1;i <= arr.length - 1 ;i ++ ) { for (int j = 1;j <= arr.length - i ;j ++ ) { if (arr[j - 1] > arr[j]) { swap(arr,j-1,j); } } } /* //第一轮 for (int i = 1;i <= arr.length - 1 ;i ++ ) { if (arr[i - 1] > arr[i]) { swap(arr,i-1,i); } } //第二轮 for (int i = 1;i <= arr.length - 2 ;i ++ ) { if (arr[i - 1] > arr[i]) { swap(arr,i-1,i); } } //第三轮 for (int i = 1;i <= arr.length - 3 ;i ++ ) { if (arr[i - 1] > arr[i]) { swap(arr,i-1,i); } } */ } static void copy(int[] src,int srcPos,int[] dest,int destPos,int length) { /* //拷贝3 dest[destPos]=src[srcPos]; //拷贝4 srcPos++; destPos++; dest[destPos]=src[srcPos]; //拷贝5 srcPos++; destPos++; dest[destPos]=src[srcPos]; //拷贝6 srcPos++; destPos++; dest[destPos]=src[srcPos]; */ //优化后的代码 //i等于每次需要拷贝元素的索引 for (int i = srcPos;i < srcPos + length;i ++ ) { dest[destPos] = src[i]; destPos++; } }//元素第一次索引 static int indexOf(int[] arr,int key) { for (int index = 0;index < arr.length ;index ++ ) { if (arr[index] == key) { return index; } } return -1; }//最后一次 static int lastIndexOf(int[] arr,int key) { for (int index = arr.length-1;index >=0 ;index -- ) { if (arr[index] == key) { return index; } } return -1; }}
调用工具类中的方法
image.png
class ArrayUtilDemo { public static void main(String[] args) { int[] arr = {2,8,1,9,14,58,69,42}; ArrayUtil.print(arr); //搜索6的索引 ArrayUtil.sort(arr);//排序 ArrayUtil.print(arr);//打印 int index = ArrayUtil.binarySearch(arr,42);//搜索42的索引 System.out.println(index);//打印返回对应的索引值 }}
JAVA自带数组工具类Arrays
image.png
//演示数组的工具类,Arrays类class ArraysDemo { public static void main(String[] args) { int[] arr = {2,8,1,9,14,58,69,42}; String ret = java.util.Arrays.toString(arr);//打印数组元素 System.out.println(ret); java.util.Arrays.sort(arr);//排序数组 String ret1 = java.util.Arrays.toString(arr); System.out.println(ret1); java.util.Arrays.sort(arr);//二分搜索 int index = java.util.Arrays.binarySearch(arr,8); System.out.println(index); }}
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » day18_自行封装数组操作的工具类_JAVA自带数组工具类Arrays
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » day18_自行封装数组操作的工具类_JAVA自带数组工具类Arrays