小白想当程序员

导航

Java学习


打印数组的方法

package com.Long.array;

import java.util.Arrays;

public class array05 {
   public static void main(String[] args)
{
     
int[] a = {1, 2, 3, 456, 5112, 1654};
System.out.println(Arrays.toString(a)); //[1, 2, 3, 456, 5112, 1654]
print(a); //1 2 3 456 5112 1654
System.out.println(a); // [I@1b6d3586

  }
   
   public static void print(int[] a){
       for (int i = 0; i < a.length; i++) {
           System.out.print(a[i]+" ");
      }
  }
}

 

Arrays.sort(a) 对数组a进行从小到大的排序

Arrays.fill(a,1) 对数组A全部填充成1

Arrays.fill(a,1,3,1)对数组从第一个到2个填充成1

package com.Long.array;

import java.util.Arrays;

public class array06 {
   public static void main(String[] args) {
     
int[] a = {1,2,3,456,5112,1654};
Arrays.sort(a);
System.out.println(Arrays.toString(a)); //[1, 2, 3, 456, 1654, 5112]
Arrays.fill(a,1,4,0);
System.out.println(Arrays.toString(a)); //[1, 0, 0, 0, 1654, 5112]
Arrays.fill(a,0);
System.out.println(Arrays.toString(a)); //[0, 0, 0, 0, 0, 0]

  }
}

 

冒泡排序

array为一个数组,自己设置一个排序sort方法对array数组从小到大进行排序。

 

package com.Long.array;

import java.util.Arrays;

public class arraydemo07 {
   public static void main(String[] args) {

   int[] array = {1,2,5,6,564,15,32,56,3165,15612};

       int[] sort = sort(array);//调用完我们自己写的排序方法,返回一个排序后的数组
       System.out.println(Arrays.toString(sort));

  }
   //冒泡排序
   //比较数组两个相邻的元素,如果第一个比第二个大就交换位置,
   //每一次比较都会产生一个最大或者最小的数
   //下一轮少一次排序,直到结束。

   public static int[] sort (int[] array){
       int temp = 0;

       //外层循环,判断我们这个要走多少次;
       for (int i = 0; i < array.length-1; i++) {

           boolean flag = false; //如果数组直接排好了,就不用进行了

       //内层循环,比较两个数大小,交换位置
           for (int j = 0; j < array.length-1-i; j++) {
               if(array[j]>array[j+1]){
                   temp = array[j];
                   array[j] = array[j+1];
                   array[j+1] = temp;
                   flag = true;
              }
          }
           if (flag==false){
               break;
          }
      }

       return array;
  }
}

 

 

稀疏数组

 

 

 

将左侧数组变成右侧形式,简单定义一个11*12的数组,array1 [1][2] = 1;array1 [2][3] = 2; 采用如下方法输出数组

  • 查验有效值的个数

  • 创建一个稀疏数组在第一行中输入array1行列的信息 还有 有效值的个数

  • 遍历我们的二维数组,array1.length为行的数量11,array1[i].length为列的数量12

  • 还原数组,定义新的数组array3,array2i[0]为array2数组行的信息,array2i[1]为列的信息,array2i[2]为数组在该位置的数值。

package com.Long.array;

import java.lang.reflect.Array;
import java.util.Arrays;

public class arraydemo08 {
   public static void main(String[] args) {
       // 创建一个二维数组11*12   0:没有棋子   1:黑棋 2:白棋
       int[][] array1 =new int[11][12];
       array1[1][2] = 1;
       array1[2][3] = 2;
       //输出原始的数组
       System.out.println("输出原始的数组");
       for (int[] ints : array1) {      //foreach 循环,取每一行
           for (int anInt : ints) {    //取每一列
               System.out.print(anInt+"\t");
          }
           System.out.println();
      }


       System.out.println("===============");
       //转换成稀疏数组
       //获取有效值个数
       int sum = 0;
       for (int i = 0; i < 11; i++) {
           for (int j = 0; j < 12; j++) {
               if(array1[i][j] != 0){
                   sum++;
              }
          }
      }
       System.out.println("有效值个数:"+sum);

//创建一个稀疏数组的列表
       int[][] array2 = new int[sum+1][3];
       array2[0][0] = 11; //行
       array2[0][1] = 12; //列
       array2[0][2] = sum; //有效数

       //遍历我们的二维数组
       int count = 0;
       for (int i = 0; i < array1.length; i++) {
           for (int j = 0; j < array1[i].length; j++) {
               if(array1[i][j] != 0){
                   count++;
                   array2[count][0] = i;
                   array2[count][1] = j;
                   array2[count][2] = array1[i][j];
              }
          }

      }
       for (int i = 0; i < array2.length; i++) {
           System.out.println("输出稀疏数组"+array2 [i][0]+"\t"+array2[i][1]+"\t"+array2[i][2]+"\t");

      }
       //还原数组
       int[][] array3 = new int[array2[0][0]][array2[0][1]];
       for (int i = 1; i < array2.length; i++) {
           array3[array2[i][0]][array2[i][1]] = array2[i][2];
      }
       // 打印
       System.out.println("输出原始的数组");
       for (int[] ints : array3) {      //foreach 循环,取每一行
           for (int anInt : ints) {    //取每一列
               System.out.print(anInt+"\t");
          }
           System.out.println();
      }

  }
}

posted on 2021-09-22 22:14  小白想当程序员  阅读(50)  评论(0)    收藏  举报