Java 数组练习

// 数组转字符串
int[] arr = {1,2,3,4};
String newArr = Arrays.toString(arr);
System.out.println(newArr);
//执行结果[1, 2, 3, 4]


//实现自己版本的拷贝数组
public static int[] copyof(int[] arr){
    int ret = new int[arr.length];
    for(int i = 0; i < arr.length; i++ ){
        ret[i] = arr[i];
    }
    return ret;
}


//数组遍历 
class Test{
    public static void main(String[] args){
        int[]arr = {1,2,3};
        printArray(arr);
    }
    public static void printArray(int[]a){
        for (int x:a){
            System.out.println(x);
        }   
    }
}



//参数传内置类型
class Test{
    public static void main(String[] args){
        int num = 0;
        func(num);
        System.out.println("num = " + num);
    }
    public static void func(int x){
        x = 10;
        System.out.println("x = " + x);
    } 
}
//执行结果 x=10   num=0
//修改形参x的值,不影响实参num的值



//参数传数组类型
class Test{
    public static void main(String[] args){
    int[] arr = {1,2,3};
    func(arr);
    System.out.println("arr[0]=" + arr[0]);
    }

    public static void func(int[] a){
    a[0] = 10;
    System.out.println("a[0]=" + a[0]);
    }
}
//执行结果 a[0]=10    arr[0]=10
//函数内部修改数组内容, 函数外部也发生改变. 
//引用本质上只是存了一个地址. Java 将数组设定成引用类型
//这样的话后续进行数组参数传参, 其实只是将数组的地址传入到函数形参中



//写一个方法,将数组中的每一个元素都*2
class Test{
    public static void main(String[] args){
        int[]arr = {1,2,3};
        int[] output = transform(arr);
        printArray(output);
    }

    public static void printArray(int[] arr){
        for(int i = 0; i < arr.length; i++){
            System.out.println(arr[i]);
        }
    }

    public static int[] transform(int[] arr){
        int[] ret = new int[arr.length];
        for(int i = 0; i<arr.length;i++){
            ret[i] = arr[i]*2;
        }
        return ret;
    }
}



//找数组中的最大元素
class Test{
    public static void main(String[] args){
    int[] arr = {1,2,3,4,5};
    System.out.println(max(arr));
    }

    public static int max(int[] arr){
    int max = arr[0];
    for(int i = 1; i < arr.length; i++){
        if (arr[i] > max){
            max = arr[i];
        }
    }
    return max;
    }
}


//给定一个整形数组,求平均值
class Test{
    public static void main(String[] args){
    int[] arr = {1,2,3,4,5};
    System.out.println(avg(arr));
    }

    public static double avg(int[] arr){
    int sum = 0;
    for(int x:arr){
        sum += x;
    }
    return (double)sum / (double)arr.length;
    }
}



//查找数组中的指定元素
class Test{
    public static void main(String[] args){
    int[] arr = {1,2,3,4};
    System.out.println(find(arr,3));
    }
    
    public static int find(int[] arr, int tofind){
    for(int i = 0; i < arr.length; i++){
        if (arr[i] == tofind){
            return i;
        }
    }
    return -1;
    }
}



//查找数组中指定元素(二分查找  有序数组)
class Test{
    public static void main(String[] args){
        int[] arr = {1,2,3,4,5,6,7};
        System.out.println(binarySearch(arr,6));
    }   

    public static int binarySearch(int[]arr, int toFind){
        int left = 0;
        int right = arr.length - 1;
        while(left <= right){
            int mid = (left + right) / 2;
            if(toFind < arr[mid]){
                right = mid - 1;
            }
            else if(toFind > arr[mid]){
                left = mid + 1;
            }
            else{
                return mid;
            }
        }
        return -1;
    }
}



//检查数组的有序性 升序
class Test{
    public static void main (String[] args){
        int[] arr = {1,2,3,4,5,6,7};
        System.out.println(isSorted(arr));
    }

    public static boolean isSorted(int[] arr){
        for(int i = 0; i < arr.length - 1; i++){
            if(arr[i] > arr[i+1]){
                return false;
            }
        }
        return true;
    }
}



//数组排序(冒泡排序)
class Test{
    public static void main(String[] args){
        int[] arr = {9,5,2,7};
        bubbleSort(arr);
        System.out.println(Arrays.toString(arr));
    }

    public static void bubbleSort(int[] arr){
        for (int bound = 0; bound < arr.length; bound++){
            for(int cur = arr.length - 1; cur > bound; cur--){
                if(arr[cur - 1] > arr[cur]){
                    int tmp = arr[cur - 1];
                    arr[cur - 1] = arr[cur];
                    arr[cur] = tmp;
                }
            }
        }
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值