鱼少学习多摸

day14- 数组

数组

数组类

Array 类:

Array.toString(a): 输出数组,直接print(a)是输出其hash cold值

 
1 int[] a = {1,2,3,4,45,67,9989,45};
2  System.out.println(a);
3  //直接打印a是 hashcode  [I@1b6d3586
4  printarr(a);
5  System.out.println();
6  System.out.println(Arrays.toString(a));

 

写一个数组遍历函数:

 
复制代码
 1 public static void printarr(int[] a ){
 2      for (int i = 0; i < a.length; i++) {
 3          if(i==0){
 4              System.out.print("["+a[i]+", ");
 5          } else if (i== a.length-1) {
 6              System.out.print(a[i]+"]");
 7  8          }else {
 9              System.out.print(a[i]+", ");
10          }
11 12 13      }
14  }
复制代码

 

排序函数:sort

 
1 int[] a = {1,2,3,4,45,67,9989,45};
2  Arrays.sort(a);
3  System.out.println(Arrays.toString(a));

 

冒泡排序:

 
复制代码
 1 public static void main(String[] args) {
 2  3      int[] a = {1,2,3,4,45,67,9989,45};
 4      sort(a);
 5      System.out.println(Arrays.toString(a));
 6  }
 7  8  //冒泡排序
 9  //1.比较数组中相邻的两个元素大小
10  //2. 每次比较选择一个最大或者最小的数字
11  //3. 下一次可以少一次比较排序
12  public static int[] sort(int[] array ){
13      int temp = 0;
14      //外层循环,判断要走多少次
15      for (int i = 0; i < array.length-1; i++) {
16          //内层循环,交换比较位置
17          for (int j = 0; j < array.length - 1 - i; j++) {
18              if(array[j+1]>array[j]){
19                 temp=array[j];
20                 array[j] = array[j+1];
21                 array[j+1] = temp;
22              }
23          }
24 25      }
26      return array;
27  }
复制代码

 

稀疏数组

数组中大部分数为0,存储方便以稀疏数组的形式存储

 
复制代码
 1 //1. 创建一个二维数组11*11, 0:没有棋子 1:黑棋 2:白棋
 2  public static void main(String[] args) {
 3      int[][] array1 = new int[11][11];
 4      array1[1][2] = 1;
 5      array1[2][3] = 2;
 6  7      for(int[] ints:array1){
 8          for (int an :ints){
 9              System.out.print(an +"\t");
10          }
11          System.out.println();
12      }
13      //转换为稀疏数组
14      //获取有效值的个数
15      int sum = 0;
16      for (int i = 0; i < 11; i++) {
17          for (int j = 0; j < 11; j++) {
18              if(array1[i][j]!=0){
19                  sum++;
20              }
21          }
22      }
23      System.out.println(sum);
24      int[][] array2 = new int[sum+1][3];
25      array2[0][0] = array1.length;
26      array2[0][1] = array1.length;
27      array2[0][2] = sum;
28      int count = 0;
29      for (int i = 0; i < array1.length; i++) {
30          for (int j = 0; j < array1[i].length; j++) {
31 32              if(array1[i][j]!= 0 ){
33                  count++;
34                  array2[count][0] = i;
35                  array2[count][1] = j;
36                  array2[count][2] = array1[i][j];
37              }
38          }
39      }
40      System.out.println("稀疏数组");
41      for (int i = 0; i < array2.length; i++) {
42          System.out.println(array2[i][0]+"\t"+array2[i][1]+"\t"+array2[i][2]+"\t");
43      }
44 45 46 47      //还原稀疏数组
48      int[][] array3 = new int[array2[0][0]][array2[0][1]];
49      for (int i = 1; i < array2.length; i++) {
50          array3[array2[i][0]][array2[i][1]] = array2[i][2];
51 52      }
53      for(int[] ints:array3){
54          for (int an :ints){
55              System.out.print(an +"\t");
56          }
57          System.out.println();
58      }
59 60  }
复制代码

 

 
posted @   北海之上  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
/* 粒子吸附*/
点击右上角即可分享
微信分享提示