java关于数组的复制,反转、查找
时间:2020-10-21
本文章向大家介绍java关于数组的复制,反转、查找,主要包括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("没有找到呢");
}
原文地址:https://www.cnblogs.com/xyuanzi/p/13855214.html
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- PHP操作XML中XPath的应用示例
- Laravel手动返回错误码示例
- laravel添加前台跳转成功页面示例
- PHP设计模式之装饰器(装饰者)模式(Decorator)入门与应用详解
- thinkPHP利用ajax异步上传图片并显示、删除的示例
- Yii框架where查询用法实例分析
- PHP命名空间(namespace)原理与用法详解
- Laravel 在views中加载公共页面的实现代码
- php无限极分类实现方法分析
- PHP从尾到头打印链表实例讲解
- PHP设计模式之外观模式(Facade)入门与应用详解
- PHP实现简单用户登录界面
- 使用python批量修改XML文件中图像的depth值
- PHP数组对象与Json转换操作实例分析
- PHP防止sql注入小技巧之sql预处理原理与实现方法分析