数组相关练习 分手后的思念是犯贱 2023-10-14 12:37 15阅读 0赞 ### 数组练习 ### * 将数组转化成字符串 * 数组拷贝 * 求数组元素的平均值 * 查找数组中指定元素(顺序查找) * 二分查找 * 冒泡排序 * 数组逆序 # 将数组转化成字符串 # import java.util.Arrays; public class Text1 { public static void main(String[] args) { int[] arr = { 5, 6, 4, 2}; System.out.println(Arrays.toString(arr)); } } 代码运行结果: ![在这里插入图片描述][e0a8ddae48904fd9b576fe79a8f82982.png] 这里导入了java.util包下的**Arrays**类,其中包含了一些**操作数组**的常用方法. # 数组拷贝 # 大家说下面这是不是数组的拷贝,答案是不是,这只是两个数组指向同一个对象 public class Text2 { public static void main(String[] args) { int[] arr={ 2,6,5,4}; int[] arr1=arr; } } 下面这段代码这才是数组的拷贝,将一个数组的内容复制一份放进新的数组 public class Text2 { public static void main(String[] args) { int[] arr={ 2,6,5,4}; int[] newarr= Arrays.copyOf(arr,arr.length); System.out.println(Arrays.toString(newarr)); } } 还有一个可以将arr数组一个区间复制到新数组的方法(注意范围是左闭右开) import java.util.Arrays; public class Text2 { public static void main(String[] args) { int[] arr={ 2,6,5,4}; int[] newarr= Arrays.copyOfRange(arr,0,2); System.out.println(Arrays.toString(newarr)); } } 接下来我们自己实现一个copy方法 import java.util.Arrays; public class Text2 { public static void main(String[] args) { int[] arr={ 2,6,5,4}; int[] newarr=my_copy(arr,arr.length); System.out.println(Arrays.toString(newarr)); } static int[] my_copy(int[] arr,int len){ int[] newarr=new int[len]; for (int i = 0; i <len ; i++) { newarr[i]=arr[i]; } return newarr; } } # 求数组元素的平均值 # public static void main(String[] args) { int[] arr = { 1,2,3,4,5,6}; System.out.println(avg(arr)); } public static double avg(int[] arr) { int sum = 0; for (int x : arr) { sum += x; } return (double)sum / (double)arr.length; } 代码运行结果: ![在这里插入图片描述][d8522275af9e4059bdee29d06806fe0b.png] # 查找数组中指定元素(顺序查找) # class Text2 { public static void main(String[] args) { int[] arr = { 1, 2, 3, 10, 5, 6}; System.out.println(find(arr, 10)); } public static int find(int[] arr, int data) { for (int i = 0; i < arr.length; i++) { if (arr[i] == data) { return i; } } return -1; } } 代码运行结果 ![在这里插入图片描述][aa47fd28beea4e579c3009df1473978b.png] # 二分查找 # 比如我们要查找以下数组的1,设置两个指针l,r,分别指向左右两边的元素 ![在这里插入图片描述][e5a95520e0904a10bb205f387cc29877.png] 求中间下标所对应数组值,将他与我们要查找的值进行比较,如果小于我们查找的值,说明我们要查找的值在mid右边,l=mid+1,如果大于我们查找的值,说明我们要查找的值在mid左边,r=mid-1。如果等于就直接返回下标 ![在这里插入图片描述][d6673fd48aa94cdf8427b8168ce48902.png] ![在这里插入图片描述][c1f9e6d6b4404e279f1d44a999d5ef84.png] 代码演示: class Text2 { public static void main(String[] args) { int[] arr={ 1,2,3,4}; System.out.println(erfen(arr,1)); } static int erfen(int[] arr,int target){ int l=0; int r=arr.length-1; while (l<=r){ int mid=(l+r)>>1; if(arr[mid]<target){ l=mid+1; }else if(arr[mid]==target){ return mid; }else { r=mid-1; } } return -1; } } # 冒泡排序 # import java.util.Arrays; class Text2 { public static void main(String[] args) { int[] arr={ 1,2,7,54,6}; my_sort(arr); System.out.println(Arrays.toString(arr)); } public static void my_sort(int[] arr){ for(int i=0;i<arr.length;i++){ for (int j=0;j<arr.length-i-1;j++){ if(arr[j]>arr[j+1]){ int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } } } 冒泡排序我们已经讲了很多次,这里我就不赘述了,如果想了解,请看我的其他博文。 # 数组逆序 # import java.util.Arrays; class Text2 { public static void main(String[] args) { int[] arr={ 1,2,3,4}; my_reverse(arr); System.out.println(Arrays.toString(arr)); } public static void my_reverse(int[] arr){ int l=0; int r=arr.length-1; while (l<r){ int temp=arr[l]; arr[l]=arr[r]; arr[r]=temp; l++; r--; } } } **这里我们设置了两个指针,一个指向第一个元素,一个指向最后一个元素,不断向中间靠拢,一直交换两个下标所指向的元素,当中间没有元素或中间有一个元素时候循环结束,就是这个条件就可以用l<r来控制。** 代码运行结果: ![在这里插入图片描述][913e86c10ea84d86a9784045f17f2b38.png] > 更多数组相关内容请听下回讲解,看到这里了,不妨给博主给个三连,要是想持续收听,也可以关注博主, 让我们一起变得更强吧,大家加油!!!! 大家想复习一下数组的可以看我的另一篇博客:[原来这就是数组][Link 1] ![在这里插入图片描述][7c06c2137b8b480393a0f7a1e795c923.png] [e0a8ddae48904fd9b576fe79a8f82982.png]: https://img-blog.csdnimg.cn/e0a8ddae48904fd9b576fe79a8f82982.png [d8522275af9e4059bdee29d06806fe0b.png]: https://img-blog.csdnimg.cn/d8522275af9e4059bdee29d06806fe0b.png [aa47fd28beea4e579c3009df1473978b.png]: https://img-blog.csdnimg.cn/aa47fd28beea4e579c3009df1473978b.png [e5a95520e0904a10bb205f387cc29877.png]: https://img-blog.csdnimg.cn/e5a95520e0904a10bb205f387cc29877.png [d6673fd48aa94cdf8427b8168ce48902.png]: https://img-blog.csdnimg.cn/d6673fd48aa94cdf8427b8168ce48902.png [c1f9e6d6b4404e279f1d44a999d5ef84.png]: https://img-blog.csdnimg.cn/c1f9e6d6b4404e279f1d44a999d5ef84.png [913e86c10ea84d86a9784045f17f2b38.png]: https://img-blog.csdnimg.cn/913e86c10ea84d86a9784045f17f2b38.png [Link 1]: https://blog.csdn.net/ltzoro/article/details/132065454?spm=1001.2014.3001.5502 [7c06c2137b8b480393a0f7a1e795c923.png]: https://img-blog.csdnimg.cn/7c06c2137b8b480393a0f7a1e795c923.png
相关 【JAVA】数组练习 有序分为 “升序” 和 “降序”如 1 2 3 4 , 依次递增即为升序.如 4 3 2 1 , 依次递减即为降序。 - 日理万妓/ 2024年04月23日 20:27/ 0 赞/ 87 阅读
相关 数组相关练习 数组练习 将数组转化成字符串 数组拷贝 求数组元素的平均值 查找数组中指定元素(顺序查找) 二分查找 冒泡排序 数组逆序 将 分手后的思念是犯贱/ 2023年10月14日 12:37/ 0 赞/ 16 阅读
相关 JS 数组相关 数组 function SelectLoadTable() { var mids = $("mids").val(); var hal 深藏阁楼爱情的钟/ 2023年08月17日 17:17/ 0 赞/ 66 阅读
相关 java:数组练习 简答题 java能动态分配数组吗? 可以。 int i = 7; int[] array = new int[i]; 应用:杨辉 怼烎@/ 2023年07月15日 13:18/ 0 赞/ 52 阅读
相关 elasticsearch相关API练习 前提条件需要安装elasticsearch,下载一个tag.gz的压缩包,安装jdk环境,调整jvm参数,默认1g,虚拟机上内存不够运行会提示Killed。 ![在这里插入 清疚/ 2022年10月23日 08:07/ 0 赞/ 249 阅读
相关 数组练习 ![这里写图片描述][SouthEast] include "stdafx.h" include <stdio.h> include <stdlib. ╰半夏微凉°/ 2022年06月14日 10:48/ 0 赞/ 205 阅读
相关 二维数组练习 1、创建一个称作Array2D 的类,在main()方法中声明一个称作twoD的变 量,类型为int二维数组,第一维长度为4。 2、创建一个元素类型为int的数组,该数组 向右看齐/ 2022年05月18日 10:00/ 0 赞/ 258 阅读
相关 数组练习 任务1:创建两个int类型的数组array1和array2,使用\{\}将array1初始化为8个质数: 2,3,5,7,11,13,17和19,显示array1的内容。 桃扇骨/ 2022年05月18日 09:57/ 0 赞/ 202 阅读
相关 递归相关练习 package test; import java.io.File; public class DiGuiTest { 蔚落/ 2021年12月21日 09:41/ 0 赞/ 316 阅读
相关 Java数组练习 Java数组练习 文章目录 Java数组练习 一、依次输出Java元素的值 二、数组排序(选择排序) 三、“数三退一” Myth丶恋晨/ 2021年12月10日 07:34/ 0 赞/ 339 阅读
还没有评论,来说两句吧...