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("没有找到呢");
}
java关于数组的复制,反转、查找的更多相关文章
- Java开发之Java对数组的复制
苏格拉底曾说过,“世界上最快乐的事,莫过于为理想而奋斗.”人生短短数十年,何不为梦想而奋斗一把?其实只要主动追求,梦想并不遥远.总有一天,你会把它攥在手里. 作为写的第一篇Java文章,展望一下开始下 ...
- java中数组的复制
数组复制使我们在编程过程中经常要使用到的,在java中数组复制我们大概能够分为两种,一种是引用复制,还有一种就是深度复制(复制后两个数组互不相干). 以下我们就通过測试的方法来具体看看什么是引用复制和 ...
- Java对数组的复制[转]
原文地址http://x10232.iteye.com/blog/2230762 定义一个数组 int[] a={3,1,4,2,5}: int[] b=a: int[] a={3,1,4,2,5}: ...
- java 13-1 数组高级二分查找
查找: 1.基本查找:数组元素无序(从头找到尾) 2.二分查找(折半查找):数组元素有序 pS:数组的元素必须有顺序,从小到大或者从大到小.以下的分析是从小到大的数组 二分查找分析: A:先对数组进行 ...
- Java数组的复制
初学Java的时候,需要复制数组的时候,一下子就想到使用赋值语句“=”,例如:array1 = array2:但后来慢慢发现,这个语句并不能将array2的内容复制给array1,而是将array2的 ...
- JAVA二维数组的复制
JAVA二维数组的复制 笔者今天做一道ccf题目时,遇到要将二维数组拷贝复制时,没有用常规的那种一个一个数的复制,用的是System.arraycopy()来进行复制,下面介绍这个函数的一些注意点: ...
- java中数组复制的两种方式
在java中数组复制有两种方式: 一:System.arraycopy(原数组,开始copy的下标,存放copy内容的数组,开始存放的下标,需要copy的长度); 这个方法需要先创建一个空的存放cop ...
- Java数组的复制全解
1.将一个基本数据类型数组的引用赋值给另一个数组 public class Array_copy { int[] array1=new int[]{1,2,3,4,5,6}; int[] array2 ...
- Java-Runoob-高级教程-实例-数组:04. Java 实例 – 数组反转
ylbtech-Java-Runoob-高级教程-实例-数组:04. Java 实例 – 数组反转 1.返回顶部 1. Java 实例 - 数组反转 Java 实例 以下实例中我们使用 Collec ...
- java基础-数组的折半查找原理
java基础-数组的折半查找原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果让你写一个数组的查找功能,需求如下:在一个数组中,找一个元素,是否存在于数组中, 如果存在就返回 ...
随机推荐
- Java邮件发送解决ssl及邮件中文乱码
Java邮件发送解决ssl及邮件中文乱码 org.apache.commons.mail.EmailException: Sending the email to the following serv ...
- 简约博客新主题Sina上线 - 魔改新浪
Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 简约博客新主题Sina上线 - 魔改新浪 日期:2018- ...
- 推荐一个vs Nuget部署插件
写在前面 nuget部署工具, 无论是直接用web上传还是用命令行工具上传,还是其他第三方工具我都没找到满意,直到那天在群里提了一下,有位大佬说了个NuPackvs插件,用了下,感觉基本满足了我的需求 ...
- python 发起PUT请求,报"Method not Allowed" 和 取返回的报文的内容
发起请求的时候,默认使用的POST请求方式,导致发起请求,返回[405 Method not Allowed ],检查此更新接口的请求方式为PUT,更改请求方式为PUT PUT接口返回的内容,不能通过 ...
- 认真学习css3--01-全是日志没有技术内容
由于某些原因,还是要写写前端代码. 虽然这不是我的主要责任,但也有表率的必要性. css3这个东西没有什么大难度,难点主要集中在: 1)样式比较多 2)精准定位 3)性能优化 其中第2个是日常经常面对 ...
- java ListMap使用多个或者任意个数的key进行排序
使用JAVA自己的排序方法,有的时候是一个可行的选择. 先从简单的开始说起. 一.少数key的情况 有一个需求:根据 menu_level,sort排序,越小的越前面. -- 下面代码按照升序规则进行 ...
- Sql Server 创建用户并限制权限
创建登录名 使用sa或者Windows身份验证登录,[安全性]-[登录名],右键[新建登录名] 设置登录名属性 设置数据库权限 db owner --拥有数据库全部权限,包括删除数据库权限 db ac ...
- c语言生成随机数
记录示例,留作自用 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) ...
- Linux后台运行jar文件和关闭Java程序
后台运行jar文件 Linux 运行jar包 java -jar jar文件名字.jar 这是最简单运行jar文件的命令. 特点:当前命令行窗口将被锁定,可按CTRL + C中止程序运行,或直接关闭窗 ...
- springboot实现登录demo
实现简单的登录功能 实体类 定义实体类为User3类. 使用@Data:提供类的get,set,equals,hashCode,canEqual,toString方法: 使用@AllArgsConst ...