JAVA学习第十九天

Arrays类(数组的工具类)

Arrays类中有很多供数组使用的方法,最常见的有输出数组、给数组中的元素排序等。

使用Arrays类需要先导入包,输入Arrays即可导入,导入包之后就可以引用Arrays类中的各种方法。

  1. 给数组中的元素排序:Arrays.sort(数组);(此方法只给元素排序,并不输出,排序后输出还需和输出方法连用);(升序排序)

  2. 输出数组:System.out.println(Arrays.toString(数组));

  3. 填充数组(覆盖已有元素):Arrays.fill(数组,val:需要替换为的元素)(替换全部元素)

    Arrays.fill(数组,a,b val:需要替换为的元素)(替换第a,第a+1,......,第b-1个元素,第几个指的是数组中元素的下标)。

等。

冒泡排序(重要)

思路

  1. 从后往前以此比较大小,若前面的数更大,则交换这两个数的位置;

  2. 一轮过后,最小的数就会到最前面,因此在第二轮就可以少比较一次;

  3. 不断循环,直到得到最后的结果。

代码

public static int[] sort(int[] array){
       int temp = 0;
       for (int i = 0; i < array.length-1; i++) {
           for (int j = 0; j < array.length-1-i; j++) {
               if (array[j-1] >array[j]){
                   temp = array[j-1];
                   array[j-1] = array[j];
                   array[j] = temp;
              }
              }
          }
       return array;

      }

此处以一个方法的形式给出。

稀疏数组(数据结构)

在一些情况下,我们利用数组储存数据时会有很多相同的数据,或者在一个长度很大的数组中只有几个数是有效的,其他的数都是0,而用数组储存数据时会浪费空间,此时我们可以用稀疏数组来储存。

结构

稀疏数组相当于一个表格,结构是:

(行 列 数值)

数组总行数 数组总列数 数组中的有效数值个数

第一个有效数值所在行 第一个有效数所在列 第一个有效值的值

......

最后一个有效数值所在行 最后一个有效数所在列 最后一个有效值的值

此处的第一个、第二个...是从左上到右下排序

public class ArrayDemo09 {
   public static void main(String[] args) {
       //1.创建一个棋盘; 1代表黑子,2代表白子。
       int[][] array01 = new int[11][11];
       array01[3][4] = 1;
       array01[5][6] = 2;
       array01[6][8] = 2;
       //2,输出原始的数组:
       System.out.println("原始的数组:"+"\t");

       for (int i = 0; i < 11; i++) {
           for (int j = 0; j < 11; j++) {
               System.out.print(array01[i][j]+" ");

          }
           System.out.println();

      }
       //3.输出稀疏数组
       int sum = 0;
       for (int i = 0; i < 11; i++) {
           for (int j = 0; j < 11; j++) {
               if (array01[i][j] != 0){
                   sum++;
              }
          }

      }
       System.out.println("有效值的个数:"+sum);
       System.out.println("稀疏数组:");
       int[][] array02 = new int[sum+1][3];
       array02[0][0] = 11;
       array02[0][1] = 11;
       array02[0][2] = sum;
       int count = 0;
       for (int i = 0; i < 11; i++) {
           for (int j = 0; j < 11; j++) {
               if (array01[i][j] !=0){
                   count++;
                   array02[count][0] = i;
                   array02[count][1] = j;
                   array02[count][2] =array01[i][j];
              }
          }

      }
       for (int i = 0; i < array02.length; i++) {
           System.out.println(array02[i][0]+"\t"
           +array02[i][1]+"\t"
                   +array02[i][2]+"\t");
      }
  }
}

此处借用棋盘帮助理解,其中注意合理地定义新变量可以解决很多问题并简化代码。

 

posted @ 2021-01-29 17:03  lxh8  阅读(295)  评论(0)    收藏  举报