首页 > 其他分享 >数据结构

数据结构

时间:2023-04-09 20:48:05浏览次数:30  
标签:下标 复杂度 元素 数组 数据结构 数据

数据结构,也就是 Data Structure,是一种存储数据的结构体,数据与数据之间存在着一定的关系,这样的关系有数据的逻辑关系、数据的存储关系和数据的运算关系。

在 Java 中,数据结构一般可以分为两大类:线性数据结构和非线性数据结构。

数组

数组(Array) 是一种很常见的数据结构。它由相同类型的元素(element)组成,并且是使用一块连续的内存来存储。

数组这种数据结构最大的好处,就是可以根据下标(或者叫索引)进行操作,插入的时候可以根据下标直接插入到具体的位置,但与此同时,后面的元素就需要全部向后移动,需要移动的数据越多,就越累。

时间复杂度

  • 通过下标(index)访问一个元素的时间复杂度为 O(1),因为是直达的,无论数据增大多少倍,耗时都不变
  • 数组末尾添加一个元素,时间复杂度为 O(1)
  • 删除一个元素的时间复杂度为 O(n),因为要遍历数组,数据量增大几倍,耗时也增大几倍
  • 查找一个未排序的数组时间复杂度为 O(n),因为要遍历数组;查找排序过的数组时间复杂度为 O(log n),因为可以使用二分查找法,当数据增大 n 倍时,耗时增大 logn 倍(这里的 log 是以 2 为底的,每找一次排除一半的可能)

数组长度固定,不支持动态扩容。可以随机访问元素。

链表

 

标签:下标,复杂度,元素,数组,数据结构,数据
From: https://www.cnblogs.com/xfeiyun/p/17300986.html

相关文章

  • 【Java 并发】【十】【JUC数据结构】【五】DelayQueue延迟阻塞队列原理
    1 前言前两节我们看了BlockingQueue阻塞队列的两个子类,LinkedBlockingQueue、ArrayBlockingQueue,它们都是使用了ReentrantLock、Condition的来实现的,在进行插入操作、拉取数据操作之前为了并发安全都需要进行加锁;然后插入时候在容量满的时候发现没有空间了,这时候调用Condition.......
  • 【Java 并发】【十】【JUC数据结构】【三】LinkedBlockingQueue阻塞队列原理
    1 前言这节我们就来看看LinkedBlockingQueue内部实现的原理。2 LinkedBlockingQueue的使用在看原理之前我们先来用一用LinkedBlockingQueue,来体验一下:2.1  插入数据publicclassLinkedBlockingQueueTest{publicstaticvoidmain(String[]args)throwsInter......
  • 数据结构
    文章目录一、基本数据结构二、线型表2.1、链表的类别2.2、链表操作2.2.1、单链表操作2.2.2、双链表操作2.3、顺序表和链表的比较2.4、栈2.5、队列三、树和二叉树3.1、树的定义3.1、树的一些基本术语和概念3.2、树的性质3.3、树的存储结构3.3.1、父节点表示法3.3.2、孩子表示法3.3.3......
  • 【Java 并发】【十】【JUC数据结构】【一】CopyOnWriteArrayList原理
    1 前言我们前面看过了volatile、synchronized以及AQS的底层原理,以及基于AQS之上构建的各种并发工具,ReentrantLock、CountDownLatch、Semaphore、CyclicBarrier,那么我们这节该看什么了,是不是要看运用了。在日常的业务编程中经常使用到的内存数据结构有:Map、Set、List、Queue系列......
  • 【算法数据结构专题】「延时队列算法」史上手把手教你针对层级时间轮(TimingWheel)实现
    承接上文承接上一篇文章【算法数据结构专题】「延时队列算法」史上手把手教你针对层级时间轮(TimingWheel)实现延时队列的开发实战落地(上)】我们基本上对层级时间轮算法的基本原理有了一定的认识,本章节就从落地的角度进行分析和介绍如何通过Java进行实现一个属于我们自己的时间轮服务......
  • 数据结构
    〽️数据结构顺序结构顺序栈(SequenceStack)SqStack.cpp顺序栈数据结构和图片typedefstruct{ ElemType*elem; inttop; intsize; intincrement;}SqStack;队列(SequenceQueue)队列数据结构typedefstruct{ ElemType*elem; intfront; intrear; intmaxSi......
  • 数据结构 玩转数据结构 12-3 检查二分搜索树性质和平衡性
    0课程地址https://coding.imooc.com/lesson/207.html#mid=14348 1重点关注1.1代码草图   1.2代码实现检查二分搜索树和平衡性利用了二分搜索树中序遍历由小到大的特性 和平衡二叉树的平衡因子大于1的特性//1校验二分搜索......
  • Python常见的数据结构
    Python常见的数据结构包括: 列表(List):一种有序的、可变的序列数据结构,可以存储不同类型的元素。支持添加、删除、修改和查询元素等操作。 元组(Tuple):与列表类似,但元组是不可变的,一旦创建就无法修改。元组通常用于表示一个具有一定结构的记录。 集合(Set):一种无序的、不重复的......
  • redis基础数据结构详解
    一.redis为什么快基于内存的存储虽然是单线程,但是采取了多路复用,可以高效的处理网络并发良好的数据结构设计二.redis基础数据结构redis有五种基础的数据结构string,list,set,zset,hashredis所有的数据结构的key都是string类型,我们所说的数据结构都是指value的数据结构......
  • 深入理解MySQL索引底层数据结构
    1引言在日常工作中,我们会遇见一些慢SQL,在分析这些慢SQL时,我们通常会看下SQL的执行计划,验证SQL执行过程中有没有走索引。通常我们会调整一些查询条件,增加必要的索引,SQL执行效率就会提升几个数量级。我们有没有思考过,为什么加了索引就会能提高SQL的查询效率,为什么有时候加了索引SQ......