工具的发明是针对问题来的:
a、在数学上要计算数字,人类就发明了算盘。b、在物理学上,要测量绝对的数值,人类就发明了各种度量长度的尺子、计时的钟、称重量的天平和秤等等。c、在化学上,要测量化学反应的当量,人类就发明了各种有刻度的量器。
在计算机科学中,数据的相对大小比绝对的数值重要,出于很多数据比大小的需求以及其他一些需求,就产生了一个抽象的数据结构——二叉树。
数据结构+ 算法 = 程序
理解搭建计算机软件的模块——数据结构和算法。
数据就等同于点,数据结构就是数据中常用的具体关系
写一个能够完成特定功能的程序,就相当于是作一幅画。
一幅画是点的有机组合,几何图形反映出点之间常用具体的关系。在计算机科学中,数据就等同于点,数据结构就是数据中常用的具体关系。
线性表
相当于几何图形中的直线,是最基本的数据结构,概括所有顺序排列和储存的数据。
具有线性表性质的例子:
计算机中线性表的实现方法
数组的好处:给定一个序号,可以直接找出里面的内容。 缺陷:插入新数据非常困难
为了优化数组的新增数据带来的大量的位置移动,而产生的。 好处:新增数据的时候,只要修改对应的指针即可 缺点:
查找效率不高
结构类型 | 优点 | 缺点 |
---|---|---|
数组 | 直接查找访问 | 动态插入元素麻烦 |
链表 | 动态/删除插入元素快 | 查找麻烦 |
哈希表 | 动态/删除插入元素快;可根据内容查找元素;可以将多个维度映射到一个维度 | 操作效率低;占用空间大 |
数组、链表和哈希表,它们有一些相关性,但是使用的目的有区别。
是为了便于直接查找访问,它要求数据项基本上是整齐的.
强调的是前后的依赖关系,一个连着一个,比如某个学位选课的次序,一门课和它的先修课就是这种链接关系。
本质是通过随机化,把一个比较大的、稀疏的空间,映射到一个比较小的、紧密的空间中。在计算机中,它通常是通过数组实现的。相比一般的数组,它有三个优点:
要想完成复杂的工作,必须掌握所谓科班出身人士掌握的工具和方法。另外,专业人士会把复杂的东西分解为简单的基本单元。
一个从业者水平的高下,首先在于灵活使用这些数据结构的本领。
Google在建索引时,是对所有的词建索引的,而不仅仅是对于一些重要的词建立索引
一般索引只会根据一个维度的信息建立,而不会用几个维度的组合信息建立,比如,不会建立“人名+毕业学校”这样的索引。
对索引进行查询的公式:
将关键词变成一个编号,然后再取尾数
(火车安排座位,座位号重合的,就就近坐下)-> 伪随机数 -> 数据加密->公开密钥
Google是如何找到和下载所有网页的?(如何构建一个网络爬虫?)
在计算机中,由于经常要做的事情是判断真假、比较大小、排序、挑选最大值这类的操作,而它们在计算机的世界里又如此重要,当然也就值得为这些事情专门设计一种数据结构,这种数据结构被称为二叉树。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有