6、数组、排序和查找

本文详细介绍了Java中的数组,包括创建、遍历、赋值机制、数组拷贝及反转。接着讲解了排序的基础——冒泡排序,并提及两种查找方法:顺序查找和二分查找。最后讨论了二维数组的使用及其在打印杨辉三角中的应用。

一、数组(array)

介绍:数组可以存放多个同一类型的数据。数组也是一种数据类型,是引用类型

即:数(数据)组(一组)就是一组数据

1、数组的创建

如:

//1、 double[] 表示是double类型的数组,数组名是num01

// 2、{3, 4, 6, 8.7, 3.4} 表示数组的值/元素, 依次表示数组的第几个元素(从0开始)

// 3、可用 for 循环遍历

// 4、[] 中括号可以写在数组名后 如:double num[] = {3, 4, 6, 8.7, 3.4};

// 5、可以通过 数组名.length 得到数组的长度

double[] num = {3, 4, 6, 8.7, 3.4};

// 1、我们可以通过 num[下标] 来访问数组的元素

// 2、下标是从 0 开始编号的,第一个元素就是 num[ 0 ] ,第二个元素就是 num[ 1 ],以此类推

// 3、通过for就可以循环的访问数组的元素/值

for(int i = 0; i < 6; i++){

System.out.println("第"+ ( i + 1 ) +"个元素的值=" + num[ i ]);

}

2、数组的使用

(1)使用方式1:

演示:

(2)使用方式2:

演示:

(3)使用方法3:

注:也可以这样

String[] ars = new String[]{"a","b","c"};

注意:

3、数组使用注意事项和细节

4、数组赋值机制(数组的赋值方式是引用赋值)

例:

值传递/值拷贝 和 引用传递 的区别:

5、数组拷贝(内容复制)

此时修改 arr2 对 arr1 不会产生影响

6、数组反转

7、数组的添加

  /*
要求:实现动态的给数组添加元素的效果,实现对数组的扩容。
1、原始数组使用静态分配 int[] arr = {1, 2, 3}
2、增加的元素4,直接放在数组的最后 arr = {1, 2, 3, 4}
3、用户可以通过如下方法来决定是否继续添加,添加成功,是否继续?y/n

思路分析:
1、定义初始数组 int[] arr = {1, 2, 3};  //下标为0到2
2、定义一个新的数组 int[] arrNew = new int[arr.length + 1]
3、遍历arr数组,依次将arr的元素拷贝到 arrNew数组
4、将 4 赋给 arrNew[arr.length - 1] = 4; 把4赋给arrNew最后一个元素
5、让 arr 指向 arrNew ; arr = arrNew; 那么原来arr数组就会被销毁
6、创建一个Scanner可以接受用户输入
7、因为用户什么时候退出,不确定,所以使用do-while + break 来控制
 */

    Scanner myScanner = new Scanner(System.in);
    // 初始化数组
    int[] arr = {1, 2, 3};
do {
        int[] arrNew = new int[arr.length + 1];
        //遍历 arr 数组,依次将arr的元素拷贝到arrNew数组
        for (int i = 0; i < arr.length; i++) {
            arrNew[i] = arr[i];
        }
        System.out.println("请输入你所要添加的元素");
        int addNum = myScanner.nextInt();
        // 把addNum赋给arrNew最后一个元素
        arrNew[arrNew.length - 1] = addNum;
        // 让arr指向arrNew
        arr = arrNew;
        //输出arr
        System.out.println("=====arr扩容后元素情况=====");
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i] + "\t");
        }
        //询问用户是否继续
        System.out.println("是否添加 y/n");
        char key = myScanner.next().charAt(0);
        //如果输入n,就结束
        if (key == 'n') {
            break;
        }
    } while (true);
System.out.println("退出");

二、排序

1、冒泡排序

冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底下的气泡一样逐渐想上冒。

分析:

三、查找

介绍:在java中,常用的有两种查找方式,1、顺序查找 2、二分查找

四、多维数组---二维数组

注意: int[][]

1、二维数组的使用

(1)使用方式1

(2)使用方式2

int arr[][]; // 先声明变量
arr = new int[2][3]; //再开空间

(3)使用方式3

 /*
动态创建下面二维数组,并输出

i = 0: 1
i = 1: 2 2
i = 2: 3 3 3

一个有三个一维数组,每个一维数组的元素是不一样的
 */

    //创建 二维数组,但是只是确定一维数组的个数,每一个一维数组还没有开空间
    int[][] arr = new int[3][];
    //遍历arr每个一维数组
  for (int i = 0; i < arr.length; i++) {
        // 给每个一维数组开空间 new
        // 如果没有给一维数组 new ,那么 arr[i]就是null就是空的
        arr[i] = new int[i + 1];

        // 遍历一维数组,并给一维数组的每个元素赋值
        for(int j = 0;j< arr[i].length;j++){
            // 赋值
            arr[i][j] = i+1;
        }
    }
    // 遍历arr输出
  for (int i = 0; i < arr.length; i++) {
        for(int j = 0; j < arr[i].length; j++){
            System.out.print(arr[i][j] + " ");
        }
        // 换行
        System.out.println();
    }

(4)使用方法4

打印杨辉三角:

 /*
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

规律:
1、第一行有 1 个元素;第 n 行有 n 个元素
2、每一行的第一个元素和最后一个元素都是1
3、从第三行开始,对于非第一个元素和最后一个元素的元素de值 arr[i][j]
   arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
 */

    int[][] yangHui = new int[10][];
// 遍历yangHui的每个元素
for (int i = 0; i < yangHui.length; i++) {

        // 给每个一维数组(行)开空间
        yangHui[i] = new int[i + 1];
        // 给每个一维数组(行)赋值
        // 遍历一维数组,并给一维数组的每个元素赋值
        for (int j = 0; j < yangHui[i].length; j++) {
            // 每一行的第一个元素和最后一个元素都是1
            if (j == 0 || j == yangHui[i].length - 1) {
                yangHui[i][j] = 1;
            } else {
                // 中间的元素
                yangHui[i][j] = yangHui[i - 1][j] + yangHui[i - 1][j - 1];
            }
        }
    }
// 输出杨辉三角
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、二维数组使用细节和注意事项

注意:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值