数组-多维数组

本文介绍了数组的基础知识,包括一维数组的特点、内存分配、遍历方式以及优缺点。详细讲解了冒泡排序算法,并探讨了数组作为参数传递的情况。此外,还涉及二维数组的声明与初始化,以及Java中多维数组的使用。文章通过示例展示了如何在Java程序中创建和操作数组,并提到了数组拷贝的方法。最后,讨论了数组在算法面试中的应用,包括排序算法的时间复杂度和稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一维数组入门:数组特点:长度固定,连续空间,存储同一种类型数据

数组内存分配图。

for-rach循环:简单,主要用于遍历操作。

一维数组的应用   数组优缺点:优点   按照索引查询效率高;缺点    添加删除元素效率低;按照内容查询效率低(无序)。

 冒泡排序:基本的排序算法,理解排序规则,实现并完善排序代码。

数组类型做形参。

数组的界限:

定义并用运算符new为之分配空间后,才可以引用数组中的每个元素;

数组元素的引用方式:arrayName[index] ;index为数组元素下标,可以是整型常量或整型表达式。如a[3] , b[i] , c[6*i];

数组元素下标从0开始;长度为n的数组合法下标取值范围: 0 ~ n-1;

每个数组都有一个属性length指明它的长度;数组的长度: 数组名.length

起点: 数组名[0]                 终点: 数组名[length-1]    

数组也是数据结构中的一种实现,在存储数据的时候经常用数组来存储经常见的数据结构:

1.线性表 ;2.非线性表;3.树;4.图;5.队列;6.堆;7.栈

数组经常用来考算法:

    面试需求:

1.写出某个算法

       冒泡排序

       选择排序

       插入排序

       快速排序

2.排序算法的时间复杂度(空间复杂度)

    衡量一个数据结构是否是合适的衡量标准。

3.排序算法的稳定性

    排序之前数组的元素位置和排序之后的数组元素位置是否发生变化。

二维数组:实质是每个元素是一维数组的一维数组;二维数组内存分配图。

二维数组举例: int [][] a = {{1,2},{3,4,0,9},{5,6,7}};    Java中多维数组不必须是规则矩阵形式          

二维数组可以看成以数组为元素的数组。Java中多维数组的声明和初始化应按从高维到低维的顺序进行。

public class ArrayOne{
   public static void main(String[] args){                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
       int[][] arr = new int[3][];
          arr[0] = new int[2];
          arr[1] = new int[5];
          arr[2] = new int[3];

            arr[0][0]=8;
            arr[0][1]=2;

            arr[1][0]=5;
            arr[1][1]=20;
            arr[1][2]=29;
            arr[1][3]=39;
            arr[1][4]=49;

            arr[2][0]=200;
            arr[2][1]=59;
            arr[2][2]=408;
        for(int i=0;i<arr.length;i++){
            for(int j=0;j<arr[i].length;j++){
               System.out.print(arr[i][j]+"\t");
   }
  }
 }
}

java应用程序中的主方法(程序的入口):public static void main(String[] args){......}

命令行参数:1.在启动java应用程序时可以一次性地向应用程序中转递0~多个参数-------命令行参数

2.命令行参数使用格式:

                 java  ArrayTwo one three five six "Mr Brown "

由参数args接收

1.空格将参数分开   2.若参数包含空格,用双引号引起来。

public class ArrayTwo{
     public static void main(String[] args){
       for(int i =0;i<args.length;i++){
           System.out.println("args["+i+"]="+args[i]);
   }
  }  
}

数组的拷贝:1.使用java.lang.System类的静态方法

        public static void arraycopy

                (Object src,int srcPos,Object dest, int destPos,int length) 

可以用于数组src从第srcPos项元素开始的length个元素拷贝到目 标数组从destPos项开始的length个位置。

 如果源数据数目超过目标数组边界会抛出

        IndexOutOfBoundsException 异常。 

public class ArrayOne{
    public static void main(String[] args){

        String[] s = {"Mircosoft","IBM","Sun","Oracle","Apple"};
		 String[] sBak = new String[6];
		 System.arraycopy(s,0,sBak,0,s.length);
		   for(int i=0;i<sBak.length;i++){
			  System.out.print(sBak[i]+" ");
	}
  }
}

该类提供了关于数组操作的API。 

1.打印数组-------toString方法。2.比较两个数组是否相同------equals方法。

3.数组排序-------sort方法。       4.数组查找------binarySearch方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值