二维数组算法加排序注解

发布于:2023-01-04 ⋅ 阅读:(341) ⋅ 点赞:(0)

概念

将一维数组(普通的数组)作为元素存储的数组,称为二维数组

要求

数据类型相同

名词

元素:二维数组中的一个一维数组称为一个元素

长度:二维数组中的一维数组的个数

下标:

        下标1,对应一维数组在二维数组中的位置 下标2,值在一维数组中的位置

使用步骤

声明

        语法;

                数据类型[][] 数组名;

创建

        动态

                不带值创建 数组名 = new 数据类型[二维数组中可以存放一维数组的个数][一维数组中可以存放元素的个数];

                 二维数组中可以存放一维数组的个数:必须限制 一维数组中可以存放元素的个数:可以不限制(不写)

                 带值创建 数组名 = new 数据类型[][]{ {}, {}, {}, ... }; 注意:动态创建时,可以将声明与创建分开

        静态

                数据类型[][] 数组名 = { {值1,值2,...}, {值3,值4,值5,...}, {值6,...}, ... }; 注意:必须声明与创建同时执行

使用

        查询

                 查询二维数组中的一维数组 二维数组名[下标]

                查询二维数组中的一维数组某个位置的值

                        方式1 步骤: 1,先查询元素在的一维数组 2,通过一维数组查询值

                        方式2 数组名[元素所在的一维数组在二维数组中的位置][元素在一维数组的位置];

                查询二维数组长度 数组名.length

                查询二维数组中一维数组的长度 数组名[一维数组在二维数组中的下标].length;

        修改

                修改二维数组中的一维数组

                        二维数组[下标] = 一维数组;

                修改二维数组中的一维数组某个位置的值

                        二维数组[下标1][下标2] = 值;  

二维数组的遍历

思路: 1,循环获取二维中的一维数组 2,遍历一维数组     

for (int i = 0; i < shuzu3.length; i++) {
//            for (int j = 0; j < shuzu3[i].length; j++) {
//                System.out.print(shuzu3[i][j]);
//                
//            }
//            System.out.println();
//            
//        }

算法

作用

        1,为了大厂校招 2,扩宽思维 3,提高程序的性能

具体是

        在代码中使用数学公式,提高代码执行效率

常用的算法

        两数交换 int a = 10; int b = 1; int c = a; a = b; b = c;

        寻找最值: 寻找最大值 要求:在一个数组里面寻找最大最值

                思路: 1,有个数组

                           2,假设一个数为最大值

                         3,遍历数组

                          4,使用获取的数组中的值与假设的最大值比较       

                           5,如果获取的数组中的值大于假设的最大值,那么将取出的值赋值给假设的最大值

                            6,当循环结束后,假设的最大值就是真的最大值

int max=shuzu3[1][0];
        for (int i = 0; i < shuzu3[1].length; i++) {
            if (max<shuzu3[1][i]) {
                max=shuzu3[1][i];    
            }    
        }
        System.out.println(max);
    }

将寻找的最值放到数组的最前面

         思路: 冒泡 选择

代码注解

public class lianxi {
    public static void main(String[] args) {
        // 三种声明赋值方式
        int[][] shuzu1;
        shuzu1 = new int[2][];
        shuzu1 = new int[2][2];
        int[][] shuzu2 = new int[][] { { 1, 5, 3, 7 }, { 2, 8, 9, 6 } };
        int[][] shuzu3 = { { 3, 4, 5, 6 }, { 2, 5, 6, 7 } };

//        //查找
//        int[] shuzu4=shuzu2[1];
//        for (int s:shuzu4) {
//            System.out.print(s);    
//        }
//        int d=shuzu2[1][1];
//        System.out.println(d);
        // 修改
//        shuzu2[1]=new int[]{0,9};
//        for (int s:shuzu2[1]) {
//            System.out.println(s);    
//        }
//        shuzu2[1][1]=90;
//        System.out.println(shuzu2[1][1]);
        // 数组长度查询
//        System.out.println(shuzu2.length);
//        System.out.println(shuzu2[1].length);    
        // 二维数组的遍历
//        for (int i = 0; i < shuzu3.length; i++) {
//            for (int j = 0; j < shuzu3[i].length; j++) {
//                System.out.print(shuzu3[i][j]);
//                
//            }
//            System.out.println();
//            
//        }
//        int max=shuzu3[1][0];
//        for (int i = 0; i < shuzu3[1].length; i++) {
//            if (max<shuzu3[1][i]) {
//                max=shuzu3[1][i];    
//            }    
//        }
//        System.out.println(max);
        // 将寻找的最值放到数组的最前面思路:冒泡
//        for (int i = 0; i < shuzu3[1].length-1; i++) {
//            for (int j = 0; j < shuzu3[1].length-1; j++) {
//                if (shuzu3[1][j]<shuzu3[1][j+1]) {
//                    int s=shuzu3[1][j];
//                    shuzu3[1][j]=shuzu3[1][j+1];
//                    shuzu3[1][j+1]=s;
//                    
//                }
//                
//                
//            }
//                
//        }
//        for (int e:shuzu3[1]) {
//            System.out.println(e);
//            
//        }
        // 将寻找的最值放到数组的最前面思路:选择
        for (int i = 0; i < shuzu3[1].length - 1; i++) {
            int minIndex = i;
            for (int j = i; j < shuzu3[1].length; j++) {
                if (shuzu3[1][minIndex] < shuzu3[1][j]) {
                    minIndex = j;
                }

            }
            if (i != minIndex) {
                int s = shuzu3[1][i];
                shuzu3[1][i] = shuzu3[1][minIndex];
                shuzu3[1][minIndex] = s;
            }

        }
        for (int g : shuzu3[1]) {
            System.out.print(g);

        }
    }

}
 

排序

概念:将数组中的数据从大到小或从小到大依次排列

        冒泡排序

        选择排序

        jdk提供的排序: Arrays.sort(数组); Arrays.toString(数组):将数组转换为特定格式的字符

        


网站公告

今日签到

点亮在社区的每一天
去签到