数组

所谓数组,是有序的元素序列。若将有限个数据类型相同的变量的集合命名,那么这个名就称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式。这些无序排列的同类数据元素的集合称为数组。

数组是用于储存多个相同类型数据的集合。

切记:一旦数组被创建,那么该数组的大小是固定的,并且使用一个数组引用变量,通过下标来访问数组中的元素。

 创建数组

一、创建一维数组的形式

  • 元素类型[]  数组引用变量 = new  元素类型[数组大小,即(数组的长度)]
  • 元素类型   数组引用变量 = new   元素类型[数组大小,即(数组的长度)]

特别提醒:对于一个数组变量看起来似乎是存储了一个数组,但实际上它存储的是指向数组的引 用。严格地讲,一个数组变量和一个数组是不同的,但多数情况下它们的差别是可以忽略 的。因此,为了简化,通常可以说myList 是一个数组,而不用更长的陈述:myList 是一 个含有 个 double 型元素數组的引用变量。
 

1、数组大小和默认值

当一个数组分配空间时,必须指定该数组能够存储元素的个数,进而确定数组的大小,并且数组一旦被创建,则数组的大小即(长度)不能在修改。

数组的默认值:数值型的基本数据类型的默认值为0;字符型(即char)的默认值为'\u0000';布尔类型(boolean)的默认值为false。

2、数组元素的查找

通过下面的例子介绍一下数组的查找:

import java.util.Scanner;
/*
所谓查找,不明思议就是在一组数据中查找某一个值(大多情况下就是定义一个数组,在给定某一个值,进行查找),
而且查找的结果就只有两种,一、true;二、false
具体查找的方法都有哪些?——一般就是将给定的一组数据,从第一个遍历到所要查找的数值之后结束
                        并打印自己所查找的结果,对于初学者估计有很大的帮助,便于理解。
                        但是该方法的规模呈线性增长,当一组数据足够多时,岂不是规模越大,时间复杂度就越大
                    二——接下来这一种算法就是二分法:
                        二分法应该不陌生吧,不明思议就是对半查找,但是二分法查找是有一定的前提:就是该数据必须呈一种
                                                                                        升序或者降序
                        例如:在下面的一组数据中查找7

                编号:       0   1   2   3   4   5   6                         
                            1   3   5   7   9   12  34          该数据总共为6个
            查找的第一步:首先把该数据分成两部分——
                             0   1   2
                    第一步分为:1   3   5
                               3   4   5   6
                    第二部分为:7   9   12  34 
            查找的第二部:比较所要查的数值(7)与(该组数据的最小下标与最大下标之和再整除2的值)
            查找的第三步:如果大于在第二部分里面在找,如果小于就在第一部分里面查找;
            查找的第四部:7大于该值,因此在第二部分,所以再把第二部分数据分为两个部分——
                                 3   4
                        第一部分:7   9 
                                 5   6
                        第二部分:12  34
            查找的第五步:重复第二步,第三步
            查找的第六步:最终找到在下标为3处所对应的值是7

            总结:二分查找虽然过程能麻烦一点,但是规模较小于第一种方法,该方法的时间复杂度为logn
        等其它查找方法

在查找的整个过程中会遇到,排序问题:我先介绍一下冒泡排序:
        例:给定一组数据要求为升序:
            1 3 2 7 4       总共为6个数字
    具体的排序思路如下:
    第一步:0   1   2   3   4
           1   3   2   7   4    先是进行0和1进行比较:1小于3,则不动,再进行3和2比较,3大于2,3与2交换位置
                                以此类推,因此第一次所得结果为:1   2   3   4   7,结束
 */
class Test03{
    public static void main(String[] args){
        Scanner input=new Scanner(System.in);
        System.out.print("请输入一串数字:");
        int[] arr=new int[10];
        int count=0;
        int temp=1;
        while(true){
            arr[count++]=input.nextInt();
            if(count==10){
                break;
            }
        }
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+" ");
        }
        System.out.println();
        /*
        冒泡排序
         */
        for(int i=1;i<10;i++){
            for(int j=0;j<9;j++){
                if(arr[j]>arr[j+1]){
                    temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+" ");
        }
        System.out.println();
        int index=-1;//存放下标的
        int min=0;//存放小的下标
        int max=arr.length-1;//存放大的下标
        int mid=(min+max)/2;//中间
        System.out.print("Enter a num:");
        int num=input.nextInt();
        while(true){
            if(num>arr[mid]){
                min=mid+1;
                mid=(min+max)/2;
            }else if(num<arr[mid]){
                max=mid-1;
                mid=(min+max)/2;
            }else{
                index=mid;
                System.out.println(index);
                break;
            }
            if(min>max){
                System.out.println(index);
                break;
            }
        }
    }
}

二、二维数组 

二维数组的基础知识

1、声明二维数组变量并创建二维数组

声明二维数组的语法:

1、数据类型[ ][ ]  数组名;2、数据类型    数组名[ ][ ];

注意事项:使用matrix[2,1]访问行下为2,列下标为1的元素是一种常见的错误。在Java中,每一个下标必须放在一个方括号中。

2、获取二维数组的长度

 例:int[ ][ ]  matrix=new int[10][5];

注意:在一维数组中,数组名 . length是获取一维数组的长度;而在二维数组当中,数组名 . length获取的是行的长度,数组名[i] . length获取的是每一行中的元素有多少个;相当于每一行中的列数。

3、对二维数组的操作

例:

import java.util.Scanner;
class Demo09{
    public static void main(String[] args){
        Scanner input=new Scanner(System.in);
        System.out.println("Enter a 3-by-4 matrix row by row:");
        double[][] arr=new double[3][4];
        int count1=0,count2=0,count3=0;
        /*
        初始化二维数组
        */
        for(int i=0;i<arr.length;i++){
            for(int j=0;j<arr[i].length;j++){
                arr[i][j]=input.nextDouble();
            }
        }
        /*
        打印二维数组
         */
        print(arr);
        System.out.println("Sum of the elements at column 0 is "+sumColumn(arr,0));
        System.out.println("Sum of the elements at column 1 is "+sumColumn(arr,1));
        System.out.println("Sum of the elements at column 2 is "+sumColumn(arr,2));
        System.out.println("Sum of the elements at column 3 is "+sumColumn(arr,3));
    }
    public static void print(double[][] arr){
        for(int i=0;i<arr.length;i++){
            for(int j=0;j<arr[i].length;j++){
                System.out.print(arr[i][j]+" ");
            }
            System.out.println();
        }
    }
    /*
    求和
     */
    public static double sumColumn(double[][] arr,int columnIndex){
        double sum=0;
        //System.out.println(arr.length);
        for(int i=0;i<arr.length;i++){
            
            sum=sum+arr[i][columnIndex];
            //System.out.println(sum);
        }
        return sum;
    }
}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值