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] + " ");

    }

    }

    }

  • 相关阅读:
    Verilog HDL Test Bench
    配置maven仓库
    mac上卸载oracle jdk 1.8.0_31
    Mac系统安装jdk和maven
    ActiveX的AssemblyInof.cs文件 IObjectSafety  接口
    C#破解dll
    Web Api 转
    dynamic
    无焦点窗体(转载)
    Linux操作系统基础知识part4
  • 原文地址:https://www.cnblogs.com/terrycode/p/12244863.html
Copyright © 2011-2022 走看看