day14java学习打卡:数组的复制(与复制的区别)与反转,查找

数组的复制与赋值
/*
 * 使用简单数组
 *(1)创建一个名为ArrayTest的类,在main()方法中声明array1和array2两个变量,
 *他们是int[]类型的数组。
 *(2)使用大括号{},把array1初始化为8个素数:2,3,5,7,11,13,17,19。
 *(3)显示array1的内容。//遍历
 *(4)赋值array2变量等于array1,修改array2中的偶索引元素,使其等于索引值
 *(如array[0]=0,array[2]=2)。打印出array1。
 *
 *思考:array1和array2是什么关系?
 *     array1和array2地址值相同,都指向了堆空间的唯一的一个数组实体
 *拓展:修改题目,实现array2对array1数组的复制
 */

public class ArrayExer2 {
    public static void main(String[] args) {
        //声明
        int[] array1,array2;
        
        //初始化
        array1=new int[]{2,3,5,7,11,13,17,19};
        
        //遍历
        for(int i=0;i<array1.length;i++) {
            System.out.print(array1[i]+"\t");
        }
        System.out.println();
        
        //赋值array2变量等于array1
    //    array2=array1;   
        //此结果为:
        //2    3    5    7    11    13    17    19    
        //0    3    2    7    4    13    6    19
        
        
        //实现array2对array1数组的复制
        array2=new int[array1.length];//只要有重新new的,就生成一个新数组
        for(int i=0;i<array2.length;i++) {
            array2[i]=array1[i];        
        }
        //此结果为:
        //2    3    5    7    11    13    17    19    
        //2    3    5    7    11    13    17    19
        
        //修改array2中的偶索引元素,使其等于索引值
        for(int i=0;i<array2.length;i++) {
            if(i==0|i%2==0) {
                array2[i]=i;
                }    
        }

/*
 * 数组的复制、反转、查找(线性查找、二分法查找)
 */
public class ArrayTest2 {
    public static void main(String[] args) {
        
        String[] arr=new String[] {"JJ","DD","MM","GG","AA","BB"};
        
        //2.查找(或搜索)
        //2.1线性查找:
        String dest="BB";
        Boolean isflag=true;
        
        for(int i=0;i<arr.length;i++) {
            if(dest.equals(arr[i])) {  //equals指的是内容,看内容是否相等
                System.out.println("找到了指定的元素,位置为:"+i);
                isflag=false;
                break;
            } 
        }
        if(isflag) {
            System.out.println("很遗憾,没有找到哦!");
        }
        
        
        //2.2二分法查找(前提:数组为顺序排列)
        int[] arr2=new int[] {-98,-34,2,34,54,66,79,105,210,333};
        int dest1=88;
        int head=0;//初始的首索引
        int end=arr2.length-1;//初始的末索引
        boolean isflag1=true;
        
        while(head<=end) {
            int middle=(head+end)/2;
            if(dest1==arr2[middle]) {
                System.out.println("找到了指定元素,位置为:"+middle);
                isflag1=false;
                break;
            }else if(dest1<arr2[middle]) {
                end=middle-1;
            }else {
                head=middle+1;
            }
            }
        if(isflag1) {
        System.out.println("不好意思呢亲,没有找到呢");
        }
        }
    }
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值