数据结构简析

今天不学习,明天变垃圾

数据结构是什么?为什么需要数据结构?

开始正文之前,先给大家讲个笑话。

某一天早晨,老板给小张一个产品检测仪,让他从一堆产品中把少量不合格的产品挑出来,小张撸起袖子就打算拿起产品一个个测试。这时候旁边老王看不下去了,他一把推开小张,把这堆产品分成两份,把其中一份拿去检测,检测到这一份中有产品不合格,又把这一份分成两份接着测,如此循环下去,不到一会时间,就把不合格产品全部找出来了。这时候老板出来拍了拍老王肩膀,老王一脸骄傲的看着小张,仿佛再说你小子O(n)和O(logn)都分不清。于是过了不久老王就升职了…

数据结构简单来讲又分为数据和结构。下面我们来详细讲解一下这两个概念。

  • 数据。 数据又称数据对象,是多种有相同关系的属性集合。比如下图书本这个数据对象,它有书名、价格、出版社等属性,并且其共同关系就是书本。
    在这里插入图片描述
  • 结构。 结构一般分为逻辑结构和物理结构。
    • 逻辑结构又分为集合结构、线性结构、树状结构、图状结构等。
      在这里插入图片描述
    • 物理结构分为顺序存储结构和链式存储结构。
      在这里插入图片描述

最基本的数据结构 -----数组

数组是一系列有序数据的集合,它是一种数据长度固定,且内存空间连续的存储结构(大家可以猜猜数组的逻辑结构和物理结构分别是什么^^)。数组在创建时必须声明数组长度,接下来就会在内存中给它分配长度固定且连续的存储单元。

上面简单的介绍一下数组基本概念,接下来分析一下数组的增删改查。

  • 增。 数组是一种数据长度固定的存储结构,因此数组并没有增加数据的功能,如果真的需要给数组增加数据,只能创建一个新的数组,新的数组长度要比旧数组长度要长,接着通过System.arraycopy(); 的方式把旧数组复制到新数组中,再添加新数据。如果要添加数据的下标大于或等于数组长度,就会报数组越界。
    在这里插入图片描述
  • 删。 数组是一种数据长度固定的存储结构,因此数组并不存在删除操作。如果需要用数组做删除操作,必须通过使用System.arraycopy();的方式去复制数据。
  • 改。 数组声明后,可以根据下标重新赋值,如下图所示。需要注意的是,数组声明后,内存中保存的是没有实际意义的默认值。
    在这里插入图片描述
  • 查。 数组是一系列有序数据的集合,支持随机存取,读取效率极高。

数组的优缺点分析

  • 数组的优点
    • 有序的,支持随机存取。
    • 存取效率极高。
  • 数组的缺点
    • 数组长度固定,不能动态增长。
    • 没有真正意义上的增删操作。如果要实现增删功能,需要大量arraycopy 操作,效率极其低下。
    • 内存利用率低。数组声明后,将会给它分配连续固定大小的内存,其中允许保存空数据,造成内存利用率低。

为了解决数组内存利用率低的问题,科学家们提出了线性表的概念。下一篇文章中为大家详细讲解…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值