章三、数组语法—— 创建、遍历、排序、二维数组

一、数组的概念及作用


 

 数组的概念:

        一组相同数据类型元素的集合,是一个容器

数组的本质:

        数组本身是引用数据类型,是一个对象

数组的作用:

        数组可以存储基本数据类型,也可以存储引用数据类型

注:

        数组创建时必须指定长度,且长度不可变;

        数组中每个元素空间是连续的

二、数组的创建


 

 声明数组的两种方式:

      1、  数据类型  [  ]  数组名:

int [] a;

       2、  数据类型  数组名  [  ]:

int a [];

例:

        创建一个容量为 5 的一个数组,使用默认值对其进行初始化:

        int[] ary0 = new int[5];
        int ary1[] = new int[5];

 默认值:整数为 0 ,浮点数是 0.0,引用类型都是 null ,boolean类型是 false 

 另例:

int[] a = new int[]{1,2,3,4,5,6,7};
int[] b = {1,2,3,4,5,6,7};

        此时 new 后面的 int 中 不能 再填数字 

对数组内容的输出:

        int[] ary0 = new int[5];  // new 创建一个数组,并指定数组的长度(容量)
        
        System.out.println(ary0); // [I@1b6d3586 ---数组在内存中的地址
        System.out.println(Arrays.toString(ary0)); //将数组以字符串形式输出出来

        String[] strings = new String[5];
        System.out.println(Arrays.toString(strings)); //[null, null, null, null, null]

三、数组的访问与迭代 


 

1、数组的访问 

数组元素访问的格式:

数组名[索引]

 例如:a[0] 、a[1]

注:数组的索引从 0 开始,且索引的数据类型是整数。

2、数组的迭代 

(1)for 循环

例如:

int[] a = new int[]{1,2,3,4,5}
for(int i = 0;i<a.length;i++){
    System.out.print(a[i]);
}

 (2)加强 for 循环(写法简单,但不能控制循环区间)

格式:

for(数组元素的类型  临时变量名  :  数组名){

        System.out.println(临时变量名);

}

 即:

int[] b = new int[]{1,2,3,4,5};
for(int i : b){
    System.out.println(i);
}

 

四、数组的排序


 

1、冒泡排序 

        思想: 通过将 待排序序列 从前向后(从下标较小的元素开始依次对相邻两个元素的值进行两两比较,然后将 较大的元素 向后排,就如水底下的气泡一样逐渐向上冒。

 代码实现:

public static void main(String[] args) {

        int[] arr = {3,11,6,-1,10,2,30};

        //定义一个标志位,用于判定元素之间是否进行了交换
        boolean flag = false;

        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    //进入这个if分支里边,则说明有元素进行了交换
                    //所以将flag=true
                    flag = true;
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }

            //在进行完一轮的排序之后,判断本轮是否发生了元素之间的交换
            //如果没有发生交换,说明数组已经是有序的了,则直接结束排序
            if (!flag) {
                break;
            } else {
                //如果发生了交换,那么在下一轮排序之前将flag再次置为false
                //以便记录下一轮排序的时候是否会发生交换
                flag = false;
            }
            System.out.println("第"+(i+1)+"趟:"+ Arrays.toString(arr));
        }
    }

 

2、选择排序

        思想:是一种简单直观的排序算法。它的工作原理是每一趟从 待排序的数据元素 中选出 最小(或最大)的一个元素,与 尚未排好序 的数列的 最前(或最后)相交换,直到全部待排序的数据元素排完。 

 

 代码实现:

int[] arr = {3,11,6,-1,10,2,30};

        // 总共要经过 N-1 轮比较
        for (int i = 0; i < arr.length - 1; i++) {

            //将最小值的索引赋值未排序的第一个数的序列
            int min = i;

            // 每轮需要比较的次数 N-i
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[j] < arr[min]) {
                    // 记录目前能找到的最小值元素的下标
                    min = j;
                }
            }
            // 将找到的最小值和i位置所在的值进行交换
            if (i != min) {
                int tmp = arr[i];
                arr[i] = arr[min];
                arr[min] = tmp;
            }
            System.out.println("第"+(i+1)+"趟:"+ Arrays.toString(arr));

        }

 

五、二维数组


 

 定义:数组的元素是数组的数组。

二位数组的声明:

int[][] a;
int a2[][];

 二维数组的创建:

int[][] a = new int[][]{{1,3},{1,2,3},{1,2,3}};
int[][] b = {{1,3},{1,2,3},{1,2,3}};
int[][] c = new int[3][5];
int[][] d = new int[3][];
d[0] = new int[2];
d[1] = new int[4];
d[2] = new int[6];

 二维数组的遍历:

        int[][] a = new int[][]{{1,2,3},{1,2,3,4},{1,2,3,4,5}};

        for(int i =0;i<a.length;i++){
            System.out.print("[");
            for(int j = 0;j<a[i].length;j++){
                System.out.print(a[i][j]);
                if(j!=a[i].length-1){
                    System.out.print(",");
                }
            }
            System.out.print("]\n");

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

三木几

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

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

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

打赏作者

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

抵扣说明:

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

余额充值