zoukankan      html  css  js  c++  java
  • 003-数据结构-线性结构-数组

    一、概述

      数组就是一段连续的内存,即使在物理内存中不是连续的,在逻辑上肯定是连续的。

      在java 中,数组是最基础的一种数据结构。

      数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。

      数组中的元素可以是任何类型,包括基本类型和引用类型。

    1.1、数组创建

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

    1.2、数组元素的使用

    arr[1],arr[i],arr[6*i]

    下标赋值

    arr[1]=1;

    1.3、数组的拷贝

      1、使用java.lang.system类的静态方法

        public static void arrayCopy(object src,int srcPos,object dest,int destPos,int length){}

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

      3、如果源数据数目超过目标数组边界会抛出IndexOutOfBoundsException异常。

            int[] arr= new int[5];
            int[] arr3= {1,2,3,4};
    
            System.arraycopy(arr3,0,arr,0,arr3.length);
    
            for (int i = 0; i < arr.length; i++) {
                int i1 = arr[i];
                System.out.print(arr[i]+" ");
            }

    二、数组的分类以及实现

    2.1、无序数组

    代码地址: NoOrderArray

    无序数组的优点:插入快,如果知道下标,可以很快的存取

    无序数组的缺点:查找慢,删除慢,大小固定。

    2.2、有序数组

      有序数组就是指数组中的元素是按一定规则排列的,其好处就是在根据元素值查找时可以是使用二分查找,查找效率要比无序数组高很多,在数据量很大时更加明显。当然缺点也显而易见,当插入一个元素时,首先要判断该元素应该插入的下标,然后对该下标之后的所有元素后移一位,才能进行插入,这无疑增加了很大的开销。

      因此,有序数组适用于查找频繁,而插入、删除操作较少的情况

      有序数组的封装类如下,为了方便,我们依然假设数组中是没有重复值的,并且数据是按照由小到大的顺序排列的

    代码地址: OrderArray

      有序数组最大的优势就是可以提高查找元素的效率,在上例中,find方法使用了二分查找法

    有序数组的优点:查找效率高

    有序数组的缺点:删除和插入慢,大小固定

    2.3、动态扩容数组 

    代码地址: DynamicArray

  • 相关阅读:
    MyBatis动态SQL
    Mybatis基础配置
    MyBatis的手动映射与模糊查询
    Struts2框架和SpringMvc框架的区别
    Mybatis和Hibernate框架的区别
    Servlet
    JSP数据交互(二)
    JSP数据交互(一)
    Spark朴素贝叶斯(naiveBayes)
    【安卓开发】Android为什么选择binder
  • 原文地址:https://www.cnblogs.com/bjlhx/p/10745109.html
Copyright © 2011-2022 走看看