java基本语法(数组中-复制、反转和查找)

1.复制:深度复制(新建了一个空间)和浅度复制(两个数组名指向同一块地址)

package start;
public class YuFa {
public static void main(String[] args) {
//    对于单个变量,复制值的时候都是深度复制,是新开辟了一块空间
        int a = 4;
        int b = a;
//        改变a的值,但b的值不变
        a = 2;
        System.out.println("a的值变为2,此时b的值为:" + b);
//        数组的浅度复制(两个数组名指向同一块地址)
        int[] c = new int[] {1,2,3};
        int[] d = c;
        c[0] = 0;
        System.out.println("c[0]的值变为0,此时d[0]的值为:" + d[0]);
//        数组的深度复制(新建了一个空间)
        c[0] = 1;//还原c数组
        int[] e = new int[c.length];
        for (int i = 0;i < c.length;i++) {
            e[i] = c[i];    
        }
        c[0] = 0;
        System.out.println("c[0]的值变为0,此时e[0]的值为:" + e[0]);
    }
}

2.数组的反转

package start;
public class YuFa {
public static void main(String[] args) {
    int[] a = {1,2,3,4,6,0,8};
//    数组反转 方法一,数组的对半替换,a[i]与 a[a.length - i - 1]交换位置
    for(int i = 0;i < a.length / 2;i++) {
//        交换位置
        int tmp = a[i];
        a[i] = a[a.length - i - 1];
        a[a.length - i - 1] = tmp;
    }
//    打印出数组
    for (int i = 0;i < a.length;i++) {
        System.out.print(a[i] + " ");
    }
    System.out.println(" ");
//    数组反转 方法二,数组的对半替换,a[i]与 a[j]交换位置
    for (int i = 0,j = a.length - 1;i < j;i++,j--) {
        int tmp2 = a[i];
        a[i] = a[j];
        a[j] = tmp2;
    }    
//    打印出数组
    for (int i = 0;i < a.length;i++) {
        System.out.print(a[i] + " ");
    }    
    }
}

3.查找:包括线性查找和二分查找两种情况:

package start;
public class YuFa {
public static void main(String[] args) {
//    变量初始化,要查找的元素和数组
    int[] a = new int[] {1,3,4,6,7,10,90,45};
    int destination1 = 100;
    String[] s = {"a","b","c","d","e","f","g"};
    String destination = "c";
//    设置标志变量,方便判断是否找到
    boolean isFlag = true;
//    线性查找
    for(int i = 0;i < s.length;i++) {
        if(s[i].equals(destination)) {
            isFlag = false;
            System.out.println("已经找到该元素,其下标(索引)为: " + i);
            break;
        }
    }
    if(isFlag) {
        System.out.println("抱歉,数组中不存在该元素");
    }
//    二分查找,查找的前提是数组是顺序排列的
    isFlag = true;
//    定义查找的范围,以及查找的中间元素
    int head = 0;
    int end = a.length - 1;
    while(head <= end) {
        int middle = (head + end) / 2;
        if(a[middle] == destination1) {
            isFlag = false;
            System.out.println("已经找到该元素,其下标(索引)为: " + middle);
            break;
        }
        else 
            if(a[middle] > destination1){
                end = middle -1;
        }
            else {
                head = middle + 1;
            }

    }
    if(isFlag) {
        System.out.println("抱歉,数组中不存在该元素");
    }            
}
}
全部评论

相关推荐

牛舌:如果我不想去,不管对方给了多少,我一般都会说你们给得太低了。这样他们就会给下一个offer的人更高的薪资了。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务