数组小结

一维数组

1. 初始化方式

int[] arr = new int[5]; (推荐使用这种)
int arr[] = new int[]{1,2,3,4,5};
int arr[] = {1,2,3,4,5};

2. 遍历数组

注意:数组的下标是[0,length-1]
最常出现的是数组下标越界异常:java.lang.ArrayIndexOutOfBoundsException
第一种使用for循环

int[] arr = {1, 2, 3}; 
for (int i = 0; i < arr.length; i++) {    
	System.out.println(arr[i]); 
}

第二种使用增强for循环,即for-each

int[] arr = {1, 2, 3}; 
for (int x : arr) {    
	System.out.println(x); 
}

3. Arrays类的简单使用

3.1 数组转字符串(将数组中的内容全部打印出来)

int[] arr = {1,2,3,4,5,6}; 
String newArr = Arrays.toString(arr); 
System.out.println(newArr); // 结果 [1, 2, 3, 4, 5, 6]

3.2 数组拷贝

int[] arr = {10,20,30,40,50};
int[] arr1 = Arrays.copyOf(arr, 3);
String str = Arrays.toString(arr1); 
System.out.print(str);
//输出:[10, 20, 30] (截取arr数组的3个元素赋值给姓数组arr1)

3.3 数组填充

int[] arr = new int[5];//新建一个大小为5的数组
Arrays.fill(arr, 2,4,6);//给第2位(0开始)到第4位(不包括)赋值6
String str = Arrays.toString(arr); 
System.out.print(str);
//输出:[0, 0, 6, 6, 0]

3.4 数组排序

int[] intArray = new int[] { 4, 1, 3, -23 };
Arrays.sort(intArray);//输出: [-23, 1, 3, 4]
String[] strArray = new String[] { “z”, “a”, “C” };
Arrays.sort(strArray);//输出: [C, a, z]

3.5 自己实现八大排序算法

  • 冒泡排序
  • 选择排序
  • 插入排序
  • 快速排序
  • 归并排序
  • 希尔排序
  • 堆排序
  • 基数排序

二维数组

1. 初始化

int[][] array = new int[3][2];

int[][] a = new int[2][];
a[0] = new int[2];
a[1] = new int[3];

2. 遍历二维数组

第一种使用普通双层for循环

int[][] Arr1 = new int[3][4];          
for(int i = 0;i < Arr1.length;i++){ //先遍历行
       for(int j = 0;j < Arr1[i].length;j++){ //在根据每一行,逐一遍历各个列
             a[i][j] = '*';
             System.out.print(Arr1[i][j]+"\t");//从遍历的行和列获取二维表的元素内容。
       }
       System.out.println();
}

第二种使用增强for循环,即for-each

for(int[] row: Arr1) {//从每一行中获取元素内容
        for(int data: row){//从遍历的每行中,在逐个遍历每一列的元素。
            System.out.printf("%d\t",data);//这样就获得了二维表的每一个元素的内容
        }
        System.out.println();
}

3. 二维数组的应用

3.1 杨辉三角


创建二维数组,首尾值都是1,中间值可以从上一行中的值相加得到:a[j][k] = a[j-1][k-1] + a[j-1][k]

public void Yanghuitriangle(int n){
    int[][] a = new int[n][n];
    a[0][0] = 1;
    for (int i = 1; i < n; i++){ //初始化第一列和对角线
        a[i][0] = a[i][i] = 1;
    }
    for (int j =2; j < n; j++){  //计算中间值
        for (int k = 1;k < j; k++){
            a[j][k] = a[j-1][k-1] + a[j-1][k];
        }
    }
    for (int i =0; i < n; i++){  //输出
        for (int j = 0; j <= i;j++){
            System.out.print(a[i][j] + "\t\t");
        }
        System.out.println();
    }
}
posted @ 2021-04-27 15:11  qi_chao  阅读(49)  评论(0编辑  收藏  举报