2024-04-09

一、数组的概念

数组概念: 数组就是用于存储数据的长度固定的容器,保证多个数据的数据类型要一致。

                   按照维度区分:一维数组:存储一组数据。

                                            二维数组:存储多组数据。

                    按照元素类型区分:基本数据类型的元素:存储数据值

                                                     引用数据类型的元素:存储对象(本质上存储对象的首地址)

数组的定义:元素的数据类型[ ]  数组名(推荐使用)

                      元素的数据类型 数组名[ ]

                      一个数组要包含数组的维度、数组的元素类型、数组名。

                        //比如,要存储一个小组的成绩

                        //int[ ] scores;;

数组的初始化:静态初始化有三种:1.数据类型[] 数组名 = {元素1,元素2,元素3...};

                                                                   //int[ ] arr = {1,2,3,4,5};

                                                         2. 数据类型[] 数组名 = new 数据类型[]{元素1,元素2.};

                                                                    //int[] arr = new int[]{1,2,3,4,5};

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

                                                             数组名 = new 数据类型[]{元素1,元素2,元素3...};

                                                                    //int[] arr;

                                                                      arr = new int[]{1,2,3,4,5};

                         动态初始化有一种:

                            数组存储的元素的数据类型[] 数组名 = new 数组存储的元素的数据类型[长度];

                                    //int[] arr = new int[5];

数组的使用:数组在使用时一般是对数组进行遍历,在遍历时要注意几点:

                            1.数组的长度属性

                            2.数组下标越界异常

                            3.数组的下标是从0开始,到length-1结束。

                            4.由于数组是引用数据类型,记录了数组的地址,当把一个数组赋值给另一个数组时,两个数组此时指向同一个地址,因此两个数组相等。

二、数组的常见算法

第一类:求总和、求总乘积等

        一般思想是通过定义一个变量,在遍历数组的过程中将数组中的每个元素累加到此变量上,在遍历完成后打印输出结果。

//                  int[] arr = {4,5,6,1,9};

                    //求总和、均值

                    int sum = 0;//因为0加上任何数都不影响结果

                    for(int i=0; i<arr.length; i++){

                            sum += arr[i];

                    }

                    System.out.println("sum = " + sum);

第二类:统计数组内特殊数值的个数(包括最大最小值)

        一般思想为定义一个初始值为0的记录变量,在遍历数组时通过一个if判断语句去判断此数值时候符合特殊条件,若符合则让记录变量自增,遍历结束打印。

        若为求最大最小值,则定义一个变量取数组首项假设为最大最小值,将if语句条件改变为对比条件即可,当符合时使用记录变量记录此项下标,遍历结束打印。

        //                      int[] arr = {4,5,6,1,9};

                                    //统计偶数个数

                                int evenCount = 0;

                                for(int i=0; i<arr.length; i++){

                                       if(arr[i]%2==0){

                                             evenCount++;

                                        }    

                                }

                                System.out.println("evenCount = " + evenCount);

       //                       int[] arr = {4,5,6,1,9};

                                    //找最大值

                                int max = arr[0];

                                for(int i=1; i<arr.length; i++){

                                           if(arr[i] > max){

                                                    max = arr[i];

                                            }

                                    }

                                    System.out.println("max = " + max);

第三类:数组的元素查找

        一般思想为对数组进行遍历,依次对比所需值是否匹配,不同算法时间复杂度和空间复杂度不同。

    1.顺序查找

        一般思想为从下标0开始挨个对比,对数组元素顺序无要求。

    2.折半查找

        一般思想为每次对比数组下标为中间值的元素,若此时中间值大于所需值则去往数组左半部分查找,若中间值小于所需值则往数组右半部分查找,对数组元素要求有序排列。

第四类:数组的元素排序

        一般思想为进行n轮循环,n与数组长度有关,每次循环确定一个元素的最终位置。

        1.选择排序

            选择排序思想为两层for循环嵌套,第一层for控制总循环次数,本质是每次循环需要确定一个元素的最终位置,第二层for是为了选择出本次需要确定最终位置的元素,若确定的元素此时不在最终应当在的位置,则将此元素交换至最终位置。

        2.冒泡排序

            冒泡排序思想为每次比较相邻的两个元素,若位置不对则交换,每一趟可以将一个元素确定到数组的边缘位置,类似于一个一个泡泡往前冒,若某一趟未发生一次交换,则说明数组内元素已经有序。

  • 13
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值