java关于数组的复制,反转、查找
一、数组的赋值:
arr2=arr1;对于该赋值而言,地址值一样,所以arr1会随着arr2的变化而变化。这不能称作数组的复制,因为只是把地址赋过去了。地址一样,指向的是堆空间中唯一的数组实体(数值)。
二、数组的复制:
arr2=new int[arr1.length]; for(int i=0;i<arr2.length;i++){ arr2[i]=arr1[i]; }
数组的复制,需要new一个新的数组,开辟一个新的空间。其大小和被复制的大小相同。然后需依次将arr1的元素赋给arr2,这样的话,arr1和arr2的大小和元素就都一样了。更改
其中arr2的值,也不会影响到arr1.
三、数组的反转:
法一:for(int i=0,j=arr.length-1;i<j;i++,j--){//方法一是用两个指针,一个从左到右,一个从右往左。将i和j指向的元素交换一下,就能实现反转了。那么,循 环的结束条件便是i<j.当i=j的时候,指向本身,不需要交换。 String temp=arr[i]; arr[i]=arr[j]; arr[j]= temp; } 法二:for(int i=0;i<arr.length/2;i++){//方法二是用一个指针i,i走完数组的长度的一半。也就是让前面一半的数分别与后面一半的数交换。 String temp=arr[i]; arr[i]=arr[arr.length-i-1]; arr[arr.length-i-1]=temp; }
四、数组的查找(线性查找和二分查找)
boolean isFlag=true;//线性查找,通俗地讲就是一个一个挨着找,遍历整个数组。找到了,就停止,并将找到标志isFlag置false.那么如果标志isFlag为True也就是找不到了。 String dest="aa"; dest="kk"; for(int i=0;i<arr.length;i++){ if(dest.equals(arr[i])){ isFlag=false; System.out.println("找到了指定的数,"+"数组的下标是"+i); break; } } if(isFlag){ System.out.println("很遗憾,没有找到"); } //二分法查找
二分法查找,是从中间元素开始找。但是这只针对于排好序的数组哦!二分法查找的思想也是老生常谈了。给一个head初索引,再给一个end末索引.最后令mid=(head+end)/2.
当然,isFlag不能少。循环的结束条件是head<=end,此时说明已经查找了一遍了。开始先判断mid是不是要找的数。如果是,那么找到,跳出循环!如果不是,判断是mid和要找的数
哪个大?如果要找的数比mid指向的数大,那么,直接在后半段查找。head=mid+1;否则,在前半段查找,end=mid-1;
int[] arr3=new int[]{-98,-43,-12,0,23,45,76,100};// int dest1=-12; dest1=8; //初始值索引 int head=0; //末索引 int end=arr3.length-1; boolean isFlag1=true; while(head<=end){ int middle=(head+end)/2; if(dest1==arr3[middle]){ System.out.println("找到了指定的元素"+middle); isFlag1=false; break; }else if(dest1<arr3[middle]){ end=middle-1; }else { head=middle+1; } } if(isFlag1){ System.out.println("没有找到呢"); }
学习让我快乐,工作让我快乐。学习和工作都是为了更好的生活!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)