Java数组算法

2021-03-06 05:28

阅读:472

标签:就是   rgba   span   bool   思考   目标   数组   二分法   new   

 

数组的复制

注意:此复制不是赋值,是数组元素的复制

public class Hello {
    public static void main(String[] args){
        String[] arr = new String[]{"jj","DD","MM","BB","GG","AA"}; //源数组

        String[] arr1 = new String[arr.length];  //目标数组
        //数组的复制(区别于数组变量的赋值arr1=arr)
        for(int i=0;i){
            arr1[i] = arr[i];    //将源数组的元素逐一复制到目标数组
        }
        //遍历查看结果
        for (int i=0;i){
            System.out.print(arr1[i]+" ");
        }

    }
}

数组的反转

什么是反转?就是将数组元素倒过来排列

思考:就是将最后一个元素排在第一位,将倒数第二个元素排在第二位,也就是要交换元素,那如何交换两个元素?
假如有两个杯子A和B,里面都装有水,如何将A杯、B杯子里面的水交换呢?

可以找第三个杯子C,先将B杯子里面的水倒入C中,B杯子已经空了,再将A杯子里面的水倒入B杯子,最后将C杯子里面的水倒入A杯子

//数组的反转
public class Hello {
    public static void main(String[] args){
        String[] arr = new String[]{"jj","DD","MM","BB","GG","AA"};

        for (int i=0;i//注意终止交换条件是除以2
            String temp = arr[i];       //temp变量相当于找的第三个杯子
            arr[i] =arr[arr.length-i-1];
            arr[arr.length-i-1]=temp;
        }
        //查看结果
        for (int i=0;i){
            System.out.print(arr[i]+" ");
        }
    }
}

数组的查找

线性查找

//数组的线性查找
public class Hello {
    public static void main(String[] args){
        String[] arr = new String[]{"jj","DD","MM","BB","GG","AA"};

        String dest = "dD";
        boolean isFlag = true;
        //查看结果
        for (int i=0;i){
            if (dest.equals(arr[i])){
                System.out.println("找到指定的元素为:"+i);
                isFlag = false;
                break;
            }
        }
        if (isFlag){
            System.out.println("没有找到指定的元素");
        }
    }
}

二分法查找

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

//数组的二分法查找
public class Hello {
    public static void main(String[] args){

        int[] arr = new int[]{-98,-34,2,32,46,85,95,129};
        int dest = 2;
        boolean isFlag=true;
        int head = 0; //初始索引
        int end =arr.length-1;//初始末索引
        while (headend){
            int middle = (head+end)/2;
            if (dest==arr[middle]){
                System.out.println("找到指定的元素了,索引为:"+middle);
                isFlag =false;
                break;
            }else if (arr[middle]>dest){
                end = middle -1;
            }else {  //相当于arr[middle]
                head = middle+1;
            }
        }
        if (isFlag){
            System.out.println("很遗憾,没有找到");
        }
    }
}

 

Java数组算法

标签:就是   rgba   span   bool   思考   目标   数组   二分法   new   

原文地址:https://www.cnblogs.com/king2/p/14310480.html


评论


亲,登录后才可以留言!