数据结构与算法(一): 动态数组(上)

简介: 数据结构与算法(一): 动态数组(上)

小码哥数据结构与算法(一): 动态数组

本篇是恋上数据结构与算法(第一季)的学习笔记, 使用JAVA语言

一、数组(Array)

  • 数组是一种顺序存储的线性表,所有元素的内存地址都是连续的
int[] array = new int[]{11, 22, 33}
复制代码

1.png

在很多编程语言中, 数组有个致命的缺点, 无法动态修改容量

实际开发中我们希望数组的容量是动态变化的


二、动态数组

  • 可以通过数组实现一个动态数组, 动态数组的容量是动态变化的
  • 可以对动态数组进行增删改查操作
// 元素的数量
int size(); 
// 是否为空
boolean isEmpty();
// 是否包含某个元素
boolean contains(E element); 
// 添加元素到最后面
void add(E element); 
// 返回index位置对应的元素
E get(int index); 
// 设置index位置的元素
E set(int index, E element); 
// 往index位置添加元素
void add(int index, E element); 
// 删除index位置对应的元素 
E remove(int index); 
// 查看元素的位置
int indexOf(E element); 
// 清除所有元素
void clear(); 
复制代码

三、动态数组的设计

  • 创建类ArrayList 如下图, 创建size属性来管理数组中元素的个数, 创建elements属性来管理存取的数据

image.png

public class ArrayList<E> {
  private int size;
  private E[] elements;
}
复制代码
  • 添加初始化方法, 创建elements数组, 并指定elements默认的容量
public class ArrayList<E> {
  private int size;
  private E[] elements;
  // 设置elements数组默认的初始化空间
  private static final int CAPACITY_DEFAULT = 10;
  public ArrayList(int capacity) {
    capacity = capacity < CAPACITY_DEFAULT ? CAPACITY_DEFAULT : capacity;
    elements = (E[]) new Object[capacity];
  }
  // 默认情况
  public ArrayList() {
    this(CAPACITY_DEFAULT);
  }
}
复制代码




目录
相关文章
|
存储 算法
【数据结构与算法 | 基础篇】模拟ArrayList实现的“动态数组“
【数据结构与算法 | 基础篇】模拟ArrayList实现的“动态数组“
|
存储 算法
【数据结构与算法】3、虚拟头节点、动态数组的缩容、动态数组和单链表的复杂度、数组的随机访问
【数据结构与算法】3、虚拟头节点、动态数组的缩容、动态数组和单链表的复杂度、数组的随机访问
120 0
|
存储 算法 Java
【数据结构与算法】1、学习动态数组数据结构(基本模拟实现 Java 的 ArrayList 实现增删改查)
【数据结构与算法】1、学习动态数组数据结构(基本模拟实现 Java 的 ArrayList 实现增删改查)
266 0
|
存储 人工智能 算法
数据结构 1、基本概念 动态数组实现
数据结构 1、基本概念 动态数组实现
158 1
|
存储 缓存 安全
【JavaSE专栏48】Java集合类ArrayList解析,这个动态数组数据结构你了解吗?
【JavaSE专栏48】Java集合类ArrayList解析,这个动态数组数据结构你了解吗?
225 0
|
存储 缓存 算法
【算法基础】数组和链表,动态数组,循环数组,链表的变种
【算法基础】数组和链表,动态数组,循环数组,链表的变种
240 0
C++数据结构--01数组二次封装成动态数组 2021-04-23
C++数据结构--01数组二次封装成动态数组 2021-04-23
【每日一题Day72】LC855考场就座 | 构造数据结构 动态数组+二分查找
可以使用哈希表记录每个座位是否有人入座,但是当n很大时,每次在搜索距离的时候,不可避免的会搜索到未就座的座位,时间复杂度为O(n);因此我使用动态数组isSeated记录已经就座的座位序号,并手动保证数组为升序排列(也可以使用TreeSet 做的时候没想到…),然后遍历数组,按照规律就座以及移除座位序号。
171 0
【每日一题Day72】LC855考场就座 | 构造数据结构 动态数组+二分查找
|
Java C++
《恋上数据结构第1季》动态数组实现栈
《恋上数据结构第1季》动态数组实现栈
184 0
《恋上数据结构第1季》动态数组实现栈
|
机器学习/深度学习 算法 Windows
数据结构 线性结构篇——动态数组和时间复杂度分析(3)
数据结构 线性结构篇——动态数组和时间复杂度分析
475 0
数据结构 线性结构篇——动态数组和时间复杂度分析(3)

热门文章

最新文章