0
点赞
收藏
分享

微信扫一扫

我的Java学习之路(第十九天)------ 数组的复制、反转、查找(线性查找、二分法)


(参考:尚硅谷_宋红康_Java语言基础)

文章目录

  • ​​数组的复制​​
  • ​​数组的反转​​
  • ​​数组的查找​​
  • ​​线性查找​​
  • ​​二分法查找​​

数组的复制

假定两个数组arr1与arr2,如果使用​​arr2 = arr1​​​,但是这个并不能实现数组的复制,因为在此时堆空间当中只有一个数组,​​arr2 = arr1​​实现的仅仅是将arr1的地址复制给了arr2,让它们都指向堆空间的唯一的一个数组实体;

那如何真正意义上取实现数组的复制呢?

①其中一个方法就是使用遍历的额方式取逐个赋值

package de1;


public class Test2 {

public static void main(String[] args) {
int[] array1,array2;
array1 = new int[] {1,2,3,4,5};
array2 = new int[array1.length];
for(int i=0;i<array2.length;i++) {
array2[i] = array1[i];
}
System.out.println("Array1:");
for(int i:array1) {
System.out.println(i);
}
System.out.println("Array2:");
for(int i:array1) {
System.out.println(i);
}
}
}

②其他方式可以参考我以前写的博客

数组的反转

提供其中两种方式

package de1;


public class Test2 {

public static void main(String[] args) {
int[] arr = new int[] {1,2,3,4,5};
//数组的反转
for(int i =0;i < arr.length/2;i++) {
int temp = arr[i];
arr[i] = arr[arr.length - i - 1];
arr[arr.length - i - 1] = temp;
}
//数组的遍历
for(int x:arr) {
System.out.print(x+" ");
}
}
}

②与上面方法类似,当然还可以定义两个数组,只是比较麻烦

for(int i =0,j=arr.length-1;i<j;i++,j--){
int temp = arr[i];
arr[i] = arr[arr.length - i - 1];
arr[arr.length - i - 1] = temp;
}

数组的查找

线性查找

说简单点就是按顺序去查找

package de1;


public class Test2 {

public static void main(String[] args) {
String[] arr = new String[] {"aa","bb","cc","dd"};
String dest = "bb";
boolean isFlag = true;
for(int i=0;i<arr.length;i++) {
if(dest.equals(arr[i])) {
System.out.println("找到了,位置在:"+i);
isFlag = false;
break;
}
}
if(isFlag) {
System.out.println("抱歉,没有找到");
}
}
}

二分法查找

前提:所要查找的数组必须有序

package de1;


public class Test2 {

public static void main(String[] args) {

int[] arr1=new int[] {-6,-3,0,1,3,5,9,56,58,99};
boolean isFlag = true;
int dest1 = 3;
//初始的首索引
int head = -3;
//初始的末索引
int end = arr1.length - 1;
while(head<=end) {
int mid = (head + end)/2;
if(dest1 == arr1[mid]) {
System.out.println("找到啦,索引为"+mid);
isFlag = false;
break;
}else if(arr1[mid] > dest1) {
end = mid -1;
}else {
head = mid + 1;
}
}
if(isFlag) {
System.out.println("抱歉,没有找到");
}
}
}


举报

相关推荐

0 条评论