CGB2105-Day05--复习

1 数组

1.1 数组的创建过程

  1. 在内存中开辟连续的空间,用来存放数据
  2. 给数组完成初始化过程,给每个元素赋予默认值
  3. 数组完成初始化会分配一个唯一的地址值
  4. 把唯一的地址值交给引用类型的变量a去保存
  5. 如果想要操作数组中的元素,通过下标来操作
    注意:数组名是个引用类型的变量,它保存着的是数组的地址,不是数组中的具体数据

1.2 数组特性

  1. 数组的长度通过**数组名.length;**来获取
  2. 数组一旦创建,长度无法改变
  3. 数组的下标从0开始,最大下标为数组长度-1
  4. 如果访问到了不存在的下标,会数组下标越界异常

1.3 数组工具类Arrays

  1. oString(数组名),除了char类型以外,其他类型的数组想要查看数组的具体元素,都得使用这个方法,如果不用,打印是数组的地址值
  2. sort(数组名),给数组进行排序
  3. copyOf(要复制的数组,新数组的长度)
    如果新的长度大于原数组的长度–数组的扩容
    如果新的长度小于原数组的长度–数组的缩容
    如果新的长度等于原数组的长度–普通的复制
    注意:不管是什么长度,都不是修改原数组,而是创建新数组

2 数组遍历

前提:普通数组的打印只能查看数组中的元素,不能操作,所以如果想要操作数组中的每个元素,可以遍历
遍历:把数组中的元素逐个“过一遍”
通过循环遍历数组,所以循环变量代表的是数组下标
在这里插入图片描述

2.1 冒泡排序

排序思路:要比较多轮,每轮两个相邻的元素做比较,位置不对就互换
代码思路:
通过嵌套for循环来完成
1. 外层循环:控制的是轮数,如果有n个数,最多n-1轮
2. 内层循环:控制的是每轮中比较的次数,每一轮的次数会递减,之前轮确定的最大值不应该参与后面轮的比较
注意:外层循环的循环变量代表的是轮数1 2 3 4…
内层循环的循环变量代表的是数组的下标[0,a.length-i)

public class BubbleSort {
    public static void main(String[] args) {
        int[] a = {98,35,64,15,52,10,7};
        System.out.println("原始数据:" + Arrays.toString(a));
        method1(a);
    }

    private static void method1(int[] a) {
        /**
         * 使用嵌套for循环完成冒泡排序
         */
        for (int i = 1; i <= a.length-1; i++) {
            for (int j = 0; j < a.length-i; j++) {// 内循环控制每一轮比较的次数
                //System.out.println(j + "次");
                if (a[j] > a[j + 1]) { // 顺序不对,交换位置
                    int t;
                    t = a[j];
                    a[j] = a[j +1];
                    a[j + 1] = t;
                }
            }
            System.out.println("第" + i + "轮:" + Arrays.toString(a));
        }
        System.out.println("排序后:" + Arrays.toString(a));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

直男编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值