码迷,mamicode.com
首页 > 编程语言 > 详细

Java数组算法

时间:2021-01-22 12:13:14      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:就是   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.length;i++){
            arr1[i] = arr[i];    //将源数组的元素逐一复制到目标数组
        }
        //遍历查看结果
        for (int i=0;i<arr1.length;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< arr.length/2;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<arr.length;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<arr.length;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 (head<=end){
            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]<dest
                head = middle+1;
            }
        }
        if (isFlag){
            System.out.println("很遗憾,没有找到");
        }
    }
}

 

Java数组算法

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

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!