Day10

image-20230411164912012

 package com.zhang.array;
 
 public class ArrayDemo05 {
     public static void main(String[] args) {
         //[4][2] 面向对象
         /*
             1,2 array[0]
             2,3 array[1]
             3,4 array[2]
             4,5 array[3]
         */
         int[][] array = {{1,2},{2,3},{3,4},{4,5}};
 
         for (int i = 0;i<array.length; i++){
             for (int j =0; j<array[i].length;j++){
                 System.out.println(array[i][j]);
            }
        }
         //System.out.println(array[2][0]);
         printArray(array[0]);
    }
 
     public static void printArray(int[] arrays){
         for (int i = 0; i < arrays.length; i++) {
             System.out.println(arrays[i]+"");
        }
    }
 }
 package com.zhang.array;
 
 import java.util.Arrays;
 
 public class ArrayDemo06 {
     public static void main(String[] args) {
 
         int[] a = {1,2,5,4,6,4,4654,6464,465464,23};
 
         System.out.println(a);//[I@16b98e56
         //打印数组元素
 //       System.out.println(Arrays.toString(a));
 //       printArray(a);
         Arrays.sort(a);//数组进行排序:升序
 
         System.out.println(Arrays.toString(a));
 
         Arrays.fill(a,2,4,2);//数组填充
 
    }
 
 
     public static void printArray(int[] a){
         for (int i=0;i < a.length; i++ ){
             if (i==0){
                 System.out.print("[");
            }
             if (i==a.length-1){
                 System.out.print(a[i]+"]");
            }else {
                 System.out.print(a[i]+",");
            }
        }
 
    }
 }
 package com.zhang.array;
 
 import java.util.Arrays;
 
 public class ArrayDemo07 {
     public static void main(String[] args) {
         int[] a ={1,5,8,7,9,8,79,879,564,79,46};
 
         int[] sort=sort(a);
 
         System.out.println(Arrays.toString(a));
    }
 
     //冒泡排序
     //1.比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换他们的位置
     //2.每一次比较,都会产生一个最大,或最小的数字;
     //3.下一轮则可以少一次排序!
     //4.依次循环,直到结束
     public static int[] sort(int[] array){
         int temp = 0;
         //外层循环,判断我们这个要走多少次
         for (int i=0; i<array.length-1;i++){
 
             boolean flag = false;//通过flag标识位减少没有意义的比较
 
             //内层循环,比较判断两个数,如果第一个数,比第二个数大,则交换位置
             for (int j =0;j<array.length-1-i;j++){
                 if (array[j+1]<array[j]){
                     temp = array[j];
                     array[j] = array[j+1];
                     array[j+1] =temp;
                }
            }
             if (flag==false){
                 break;
            }
        }
         return array;
    }
 }
 package com.zhang.array;
 
 public class ArrayDemo08 {
     public static void main(String[] args) {
         //1.创建一个二维数组 11*11 0:没有棋子   1:黑棋   2:白棋
         int[][] array1= new int[11][11];
         array1[1][2] =1;
         array1[2][3] =2;
         //输出原始数组
         System.out.println("输出原始数组");
 
         for (int[] ints : array1){
             for (int anInt : ints){
                 System.out.print(anInt+"\t");
            }
             System.out.println();
        }
 
         //转换为稀疏数组保存
         //获取有效值的个数
         int sum=0;
         for (int i = 0;i<11;i++){
             for (int j=0; j<11;j++){
                 if (array1[i][j]!=0){
                     sum++;
                }
            }
        }
         System.out.println("有效值的个数:"+sum);
 
         //2.创建一个稀疏数组的数组
         int[][] array2 = new int[sum+1][3];
 
         array2[0][0] = 11;
         array2[0][1] = 11;
         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];
                }
            }
        }
         System.out.println("输出稀疏数组");
 
         for (int i = 0; i < array2.length; i++) {
             System.out.println(array2[i][0]+"\t"
                     +array2[i][1]+"\t"
                     +array2[i][2]+"\t");
        }
 
         System.out.println("还原");
         //1.读取稀疏数组
         int[][] array3= new int[array2[0][0]][array2[0][1]];
 
         //2.给其中的元素还原它的值
         for (int i = 1; i < array2.length; i++) {
             array3[array2[i][0]][array2[i][1]] =array2[i][2];
        }
 
         //3.打印
         System.out.println("还原");
 
         for (int[] ints : array3){
             for (int anInt : ints){
                 System.out.print(anInt+"\t");
            }
             System.out.println();
        }
    }
 }

image-20230412155826394

image-20230412160130444

 
posted @   zhang6611  阅读(60)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示