zoukankan      html  css  js  c++  java
  • 二维数组应用

    1./*

     * 使用二维数组打印一个 10 行杨辉三角。

    【提示】

     1. 第一行有 1 个元素, 第 n 行有 n 个元素

     2. 每一行的第一个元素和最后一个元素都是 1

     3. 从第三行开始, 对于非第一个元素和最后一个元素的元素。即:

    yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];

     * 

     */

    public class YangHuiTest {

    public static void main(String[] args) {

    //1.声明并初始化二维数组

    int[][] yangHui = new int[10][];

    //2.给数组的元素赋值

    for(int i = 0;i < yangHui.length;i++){

    yangHui[i] = new int[i + 1];

    //2.1 给首末元素赋值

    yangHui[i][0] = yangHui[i][i] = 1;

    //2.2 给每行的非首末元素赋值

    //if(i > 1){

    for(int j = 1;j < yangHui[i].length - 1;j++){

    yangHui[i][j] = yangHui[i-1][j-1] + yangHui[i-1][j];

    }

    //}

    }

    //3.遍历二维数组

    for(int i = 0;i < yangHui.length;i++){

    for(int j = 0;j < yangHui[i].length;j++){

    System.out.print(yangHui[i][j] + "  ");

    }

    System.out.println();

    }

    } 

    }

    2.

    2./*

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

     * 

     * 定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,

     * 然后求出所有元素的最大值,最小值,和值,平均值,并输出出来。

     * 要求:所有随机数都是两位数。

     * 

     * [10,99]

     * 公式:(int)(Math.random() * (99 - 10 + 1) + 10)

     * 

     */

    注意初值设定 不能为0 应为数组的某一个元素 默认第一个元素 arr[0] (负数时)

    3.

    /*

     * 使用简单数组

    (1)创建一个名为ArrayExer2的类,在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。

     * 

     * 思考:array1和array2是什么关系?array1和array2地址值相同,都指向了堆空间的唯一的一个数组实体。

     * 拓展:修改题目,实现array2对array1数组的复制

     */

    public class ArrayExer2 {

    public static void main(String[] args) {  //alt + /

    int[] array1,array2;

    array1 = new int[]{2,3,5,7,11,13,17,19};

    //显示array1的内容

    for(int i = 0;i < array1.length;i++){

    System.out.print(array1[i] + " ");

    }

    //赋值array2变量等于array1

    //不能称作数组的复制。

    array2 = array1;

    //修改array2中的偶索引元素,使其等于索引值(如array[0]=0,array[2]=2)

    for(int i = 0;i < array2.length;i++){

    if(i % 2 == 0){

    array2[i] = i;

    }

    }

    System.out.println();

    //打印出array1

    for(int i = 0;i < array1.length;i++){

    System.out.print(array1[i] + " ");

    }

    }

    }

    /*

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

     * 

     * 

     */

    public class ArrayTest2 {

    public static void main(String[] args) {

    String[] arr = new String[]{"JJ","DD","MM","BB","GG","AA"};

    //数组的复制(区别于数组变量的赋值:arr1 = arr)

    String[] arr1 = new String[arr.length];

    for(int i = 0;i < arr1.length;i++){

    arr1[i] = arr[i];

    }

    //数组的反转

    //方法一:

    // for(int i = 0;i < arr.length / 2;i++){

    // String temp = arr[i];

    // arr[i] = arr[arr.length - i -1];

    // arr[arr.length - i -1] = temp;

    // }

    //方法二:

    // for(int i = 0,j = arr.length - 1;i < j;i++,j--){

    // String temp = arr[i];

    // arr[i] = arr[j];

    // arr[j] = temp;

    // }

    //遍历

    for(int i = 0;i < arr.length;i++){

    System.out.print(arr[i] + " ");

    }

    System.out.println();

    //查找(或搜索)

    //线性查找:

    String dest = "BB";

    dest = "CC";

    boolean isFlag = true;

    for(int i = 0;i < arr.length;i++){

    if(dest.equals(arr[i])){                  // int 用 ==     String用equals 

    System.out.println("找到了指定的元素,位置为:" + i);

    isFlag = false;

    break;

    }

    }

    if(isFlag){

    System.out.println("很遗憾,没有找到的啦!");

     

    }

    //二分法查找:(熟悉)

    //前提:所要查找的数组必须有序。

    int[] arr2 = new int[]{-98,-34,2,34,54,66,79,105,210,333};

    int dest1 = -34;

    dest1 = 35;

    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{//arr2[middle] < dest1

    head = middle + 1;

    }

    }

    if(isFlag1){

    System.out.println("很遗憾,没有找到的啦!");

    }

    }

    }

    /*

     * 使用简单数组

     * 拓展:修改题目,实现array2对array1数组的复制

     */

    public class ArrayExer3 {

    public static void main(String[] args) {  //alt + /

    int[] array1,array2;

    array1 = new int[]{2,3,5,7,11,13,17,19};

    //显示array1的内容

    for(int i = 0;i < array1.length;i++){

    System.out.print(array1[i] + " ");

    }

    //数组的复制:

    array2 = new int[array1.length];

    for(int i = 0;i < array2.length;i++){

    array2[i] = array1[i];

    }

    //修改array2中的偶索引元素,使其等于索引值(如array[0]=0,array[2]=2)

    for(int i = 0;i < array2.length;i++){

    if(i % 2 == 0){

    array2[i] = i;

    }

    }

    System.out.println();

    //打印出array1

    for(int i = 0;i < array1.length;i++){

    System.out.print(array1[i] + " ");

    }

    }

    }

  • 相关阅读:
    从零开始入门 K8s | 应用编排与管理
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    203. Remove Linked List Elements
    183. Customers Who Never Order
    182. Duplicate Emails
    181. Employees Earning More Than Their Managers
    1261. Find Elements in a Contaminated Binary Tree
    1260. Shift 2D Grid
  • 原文地址:https://www.cnblogs.com/terrycode/p/12244863.html
Copyright © 2011-2022 走看看