1. 面试常考<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/21459194/1619171541400-0eb4795b-4610-4a13-ab34-8b27c2b6cfd1.png#align=left&display=inline&height=332&margin=%5Bobject%20Object%5D&name=image.png&originHeight=442&originWidth=948&size=182142&status=done&style=shadow&width=711)<br /> <br /> *********************************************************************<br /> /*<br /> * 使用二维数组打印10行杨辉三角<br /> * 提示:<br /> * 1.第一行有1个元素,第n行n个元素<br /> * 2.每一行的第一个元素和最后一个元素都是1<br /> * 3.从第行开始,对于对于非第一个元素和最后一个元素的元素。即:<br /> * yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];<br /> * 1.声明并初始化二维数组<br /> * 2.给数组的元素赋值<br /> * 3.遍历二维数组<br /> */
    1. package Arry;
    2. public class YangHui {
    3. public static void main(String[] args) {
    4. //1.声明并初始化二维数组
    5. int[][] yanghui = new int[10][];
    6. //2.给数组的元素赋值
    7. for (int i = 0; i < yanghui.length; i++) {
    8. yanghui[i] = new int[i + 1];
    9. //2.1给首末元素赋值
    10. yanghui[i][0] = yanghui[i][i] = 1;
    11. //2.2给每行的非首末元素赋值
    12. //if(i>1){
    13. for(int j = 1;j<yanghui[i].length-1;j++){
    14. yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];
    15. }
    16. //}
    17. }
    18. for (int i = 0; i < yanghui.length; i++) {
    19. for (int j = 0; j < yanghui[i].length; j++) {
    20. System.out.print(yanghui[i][j] + " ");
    21. }
    22. System.out.println();
    23. }
    24. }
    25. }

    *
    image.png
    image.png
    image.png
    *
    /
    算法的考查:求数值型的数组中元素的最大值、最小值、平均数、总和等

    定义一个int型的一维数组,包含10个元素,分别赋一些随机数。
    然后求出所元素的最大值,最小值,和值。
    要求:所随机数都是两位数
    随机数:[10,99] 公式 (int)(Math.random() (99 - 10 + 1)+ 1)

    /
    package Arry;
    public class test1 {
    public static void main(String[] args){
    int arr [] = new int [10];
    //给数组赋随机数
    for(int i = 0;i arr[i] = (int)(Math.random() (90)+ 10);
    }
    //遍历数组
    for(int i = 0;i System.out.print(arr[i]+” “);
    }
    System.out.println();
    //求数组元素的最大值
    int max = 0;
    for(int i = 0;i if(max max = arr[i];
    }
    }
    System.out.println(“最大值为”+max);
    //求数组元素的最小值
    int mix = arr[0];
    for(int i = 0;i if(mix>arr[i]){
    max = arr[i];
    }
    }
    System.out.println(“最小值为”+max);
    //求数组元素的总和
    int sum = 0;
    for(int i = 0;i sum += arr[i];
    }
    System.out.println(“总和为”+sum);
    //求数组元素的平均数
    int num = sum/arr.length;
    System.out.println(“平均数为”+num);
    }
    }
    **

    /使用简单数组
    1.创建一个名为ArrayTest的类,在main()方法中声明array1和array2两个变量,
    他们是int类型的数组
    2.使用大括号{},把array1初始化为8个素数:2,3,5,7,11,13,17,19
    3.显示array1的内容
    4.赋值array2变量等于array1,修改array2中的偶索引元素,使其等于索引值
    (如array[0]=0.array[2]=2)。 打印出array1
    /

    1. package Arry;
    2. public class ArrayTest {
    3. public static void main(String[] args){
    4. int array1[] = new int[]{2,3,5,7,11,13,17,19};
    5. int array2[];
    6. for(int i = 0;i<array1.length;i++){
    7. System.out.print(array1[i]+ "\t");
    8. }
    9. System.out.println();
    10. array2= array1;
    11. for(int i = 0;i<array2.length;i++){
    12. if(i % 2 == 0){
    13. array2[i]=i;
    14. }
    15. System.out.print(array2[i]+"\t");
    16. }
    17. System.out.println();
    18. //打印array1
    19. for(int i = 0;i<array1.length;i++){
    20. System.out.print(array1[i]+ "\t");
    21. }
    22. }
    23. }

    *
    *

    /
    算法的考查: 数组的复制、反转、查找(线性查找、二分查找


    /
    package Arry;
    public class ArrayTest2 {
    public static void main(String[] args) {
    String[] arr = new String[] { “JJ”, “MM”, “DD”, “BB”, “GG”, “SS”, “OO” };
    // 数组的复制(区别于数组变量的赋值:arr1 = arr)
    //数组的复制是创建了一个新的数组,并一一赋值。
    String[] arr1 = new String[arr.length];
    for (int i = 0; i < arr.length; i++) {
    arr1[i] = arr[i];
    }
    **

    // 数组的反转
    // 方式一:
    // for(int i = 0;i // String temp = arr[i];
    // arr[i] = arr[arr.length - i-1];
    // arr[arr.length -i-1] = temp;
    // }
    // //遍历
    // for(int i = 0;i // System.out.print(arr[i]+”\t”);
    //
    // }
    *
    // 查找(搜索)
    // 线性查找
    String dest = “BB”;
    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==true){
    System.out.println(“抱歉没找到”);
    }

    // 二分查找:更快
    //前提:所要查找的数组必须序
    int[]arr2 = new int[]{-98,-34,2,34,54,66,76,88,97,213,342,546,768,990};
    int dest1 = -34;
    int head = 0;//初始的首索引
    int end = arr2.length - 1;//初始的末索引
    boolean isFlag1 = true;
    while(head<=end){
    int middle = (head + end)/2;
    if(dest1 == arr2[middle]){
    System.out.println(“找到了指定的元素,位置为:” + middle);
    isFlag1 = false;
    break;
    }else if(arr2[middle] > dest1){
    end = middle -1;
    }else{
    head = middle + 1;
    }
    }
    }
    }
    *
    *
    image.png
    *

    /
    数组的冒泡排序
    */

    1. package Arry;
    2. public class BubbleSortTest {
    3. public static void main(String[] args) {
    4. int[] arr = new int[]{43,21,44,-45,77,87,567,-132,88,44,21,90};
    5. for(int i = 0;i<arr.length - 1;i++){
    6. for(int j = 0;j<arr.length - 1 - i;j++){
    7. if(arr[j]>arr[j+1]){
    8. int temp = arr[j];
    9. arr[j] = arr[j+1];
    10. arr[j+1] = temp;
    11. }
    12. }
    13. }
    14. for(int i = 0;i<arr.length;i++){
    15. System.out.print(arr[i]+"\t");
    16. }
    17. }
    18. }

    *
    image.png
    image.png