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

  • 相关阅读:
    单例模式
    Curator Zookeeper分布式锁
    LruCache算法原理及实现
    lombok 简化java代码注解
    Oracle客户端工具出现“Cannot access NLS data files or invalid environment specified”错误的解决办法
    解决mysql Table ‘xxx’ is marked as crashed and should be repaired的问题。
    Redis 3.0 Cluster集群配置
    分布式锁的三种实现方式
    maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令
    How to Use Convolutional Neural Networks for Time Series Classification
  • 原文地址:https://www.cnblogs.com/bjlhx/p/10745109.html
Copyright © 2011-2022 走看看