Java数组补充

反转数组

package com.test.order;

import java.util.Arrays;

public class Array01 {

public static void main(String[] args) {
        int[] array = {10,20,30,40,50};
//        for (int i = array.length -1; i >= 0; i--) {
//            System.out.println(array[i]);
//        }
        int[] result = new int[array.length];
        for (int i = 0,j = array.length - 1; i < array.length; j--,i++) {
            result[j]=array[i];
        }

        for (int i = 0; i < result.length/2; i++) {
            int t = result[i];
            result[i] = result[result.length-1-i];
            result[result.length-1-i] = t;
        }
        
        System.out.println(Arrays.toString(result));
    }
}

定义二维数组

package com.test.order;

public class Array02 {
    public static void main(String[] args) {
        //定义静态二维数组
        int[][] arr = new int[][]{{12,432,5122},{22,445,634},{23,1}};
        System.out.println(arr[1][1]);
        //输出最后一个元素
        System.out.println(arr[arr.length-1][arr[arr.length-1].length-1]); // 1

        //二维数组静态初始化的简写方式
        int[][] arr1 = {{12,432,5122},{22,445,634},{23,1}};

        int[] g,z[]; //定义了两个数组,一个一维数组g,一个二维数组z
        g = new int[1];
        z = new int[2][2];
        
    }
}

打印杨辉三角

package com.test.order;

import java.util.Scanner;

public class Array04 {
    /*
    需求:
    打印杨辉三角形(行数可以键盘录入)
            1
            1   1
            1   2   1
            1   3   3   1
            1   4   6   4   1
            1   5   10  10  5   1
    我们可以通过观察发现:
    1. 每一行的第一列和最后一列都是1
    2. 从第三行开始,从第二列开始,这个数字等于他上一行的前一列和上一行的本列相加的和
     */

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入行数");
        int n = scanner.nextInt();

        //定义二维数组,存储数据
        int[][] arr = new int[n][n];
        //把每一行的第一列和每行的最后一列设置为 1
        for (int i = 0; i < arr.length; i++) {
            arr[i][0] = 1;
            arr[i][i] = 1;
//            arr[i][arr[i].length-1] = 1;
        }

        //设置中间元素
        //从第三行开始,从第二列开始,这个数字等于他上一行的前一列和上一行的本列相加的和
        for (int i = 2; i < arr.length; i++) {
            for (int i1 = 1; i1 < i; i1++) {
                arr[i][i1] = arr[i-1][i1-1]+arr[i-1][i1];
            }

        }
        
        //打印二维数组
        for (int i = 0; i < arr.length; i++) {
            for (int i1 = 0; i1 <= i; i1++) {
                System.out.print(arr[i][i1]+"\t");

            }
            System.out.println();
        }
    }
}

二分查找

package com.test.order;

public class Array06 {
    public static void main(String[] args) {
        //二分查找:前提是数组元素必须优先,如果没有顺序,那么得使用基本查找
        int[] arr = {10,20,30,40,50,60,70,80};
        int index = getIndexByElE(arr,80);
        System.out.println(index);
    }

    private static int getIndexByElE(int[] arr,int ele) {
        //定义最小索引,中间索引,最大索引
        int minIndex = 0;
        int maxIndex = arr.length-1;
        while(minIndex<=maxIndex) {
            int centerIndex = (minIndex + maxIndex) / 2;
            if (ele == arr[centerIndex]) {
                return centerIndex;
            } else if (ele > arr[centerIndex]) {
                minIndex = centerIndex + 1;
            } else if (ele < arr[centerIndex]) {
                maxIndex = centerIndex - 1;
            }
            centerIndex = (minIndex + maxIndex) / 2;
        }
        return -1;//如果没有找到,就返回-1
    }
}
posted @ 2020-12-24 06:14  Py-JS  阅读(83)  评论(0编辑  收藏  举报