前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >计算机思维: 计算机的数据结构

计算机思维: 计算机的数据结构

作者头像
公众号iOS逆向
发布2023-09-11 08:55:34
1640
发布2023-09-11 08:55:34
举报
文章被收录于专栏:iOS逆向与安全iOS逆向与安全

引言

工具的发明是针对问题来的:

a、在数学上要计算数字,人类就发明了算盘。b、在物理学上,要测量绝对的数值,人类就发明了各种度量长度的尺子、计时的钟、称重量的天平和秤等等。c、在化学上,要测量化学反应的当量,人类就发明了各种有刻度的量器。

在计算机科学中,数据的相对大小比绝对的数值重要,出于很多数据比大小的需求以及其他一些需求,就产生了一个抽象的数据结构——二叉树。

I 计算机的数据结构

数据结构+ 算法 = 程序

理解搭建计算机软件的模块——数据结构和算法。

  • 把数据结构理解为盖房子的钢筋、门窗和大梁。
  • 把算法理解成盖房子的结构原理。

1.1专业画家画金鱼的方法

  1. 把金鱼分解成几个简单的几何图形,比如头是一个大圆和两个小圆(即两个眼睛),身子是一个椭圆,鳍和尾巴是几个三角形。
  2. 如果是几条金鱼,先把位置安排好,为了画面美观,主要景物的布置要符合一些几何图形的形状。这些都用淡淡的铅笔或者淡墨勾好了,才把圆、椭圆和三角形经过平滑过渡,画成金鱼。

1.2 数据就等同于点,数据结构就是数据中常用的具体关系

写一个能够完成特定功能的程序,就相当于是作一幅画。

一幅画是点的有机组合,几何图形反映出点之间常用具体的关系。在计算机科学中,数据就等同于点,数据结构就是数据中常用的具体关系。

1.3 线性表

线性表相当于几何图形中的直线,是最基本的数据结构,概括所有顺序排列和储存的数据。

具有线性表性质的例子:

  1. 报表、物资的记录可以被抽象为线性的数据,然后按照1、2、3、4、5的顺序排列出来。
  2. 电商交易的日志记录是按照所发生的时间顺序,一条条线性地记录下来。

计算机中线性表的实现方法

  • 数组:一组编了号的固定大小的单元 。

数组的好处:给定一个序号,可以直接找出里面的内容。 缺陷:插入新数据非常困难

  • 链表: 如同买东西时排队一样,每个人只要记得前面或者后面的一个人是谁。

为了优化数组的新增数据带来的大量的位置移动,而产生的。 好处:新增数据的时候,只要修改对应的指针即可 缺点:查找效率不高

结构类型

优点

缺点

数组

直接查找访问

动态插入元素麻烦

链表

动态/删除插入元素快

查找麻烦

哈希表

动态/删除插入元素快;可根据内容查找元素;可以将多个维度映射到一个维度

操作效率低;占用空间大

II 数组、链表和哈希表

数组、链表和哈希表,它们有一些相关性,但是使用的目的有区别。

2.1 数组

是为了便于直接查找访问,它要求数据项基本上是整齐的.

2.2 链表

强调的是前后的依赖关系,一个连着一个,比如某个学位选课的次序,一门课和它的先修课就是这种链接关系。

2.3 哈希表

本质是通过随机化,把一个比较大的、稀疏的空间,映射到一个比较小的、紧密的空间中。在计算机中,它通常是通过数组实现的。相比一般的数组,它有三个优点:

  1. 动态增加或者删除一个数据项比较快。
  2. 数组只能根据下标直接查找,下标和数据内容无关,如果要根据内容查找,效率就比较低,哈希表的下标是根据数据内容计算出来的,因此根据内容查找比较快。
  3. 数组在处理多个维度时变得很复杂,哈希表可以将多个维度的数据映射到一个维度。但是,哈希表是需要额外成本的,它其实是以空间换时间。其次,数组可以一次顺序存取很多项数据,而哈希表存取数据只能一个个进行。

2.4 小结

  1. 使用基本图形、结构和组成部分来构建复杂设计和产品的方法:

要想完成复杂的工作,必须掌握所谓科班出身人士掌握的工具和方法。另外,专业人士会把复杂的东西分解为简单的基本单元。

  1. 在计算机领域,数据结构则相当于设计中的基本几何图形,它们大多是从具体的应用中抽象出来的;

一个从业者水平的高下,首先在于灵活使用这些数据结构的本领。

  1. 凡事有一利就有一弊

III 索引带来搜索的效率、灵活性

Google在建索引时,是对所有的词建索引的,而不仅仅是对于一些重要的词建立索引

一般索引只会根据一个维度的信息建立,而不会用几个维度的组合信息建立,比如,不会建立“人名+毕业学校”这样的索引。

对索引进行查询的公式:将关键词变成一个编号,然后再取尾数(火车安排座位,座位号重合的,就就近坐下)-> 伪随机数 -> 数据加密->公开密钥

Google是如何找到和下载所有网页的?(如何构建一个网络爬虫?)

IV 二叉树的来源

  1. 二叉树的来源:https://blog.csdn.net/z929118967/article/details/123693521?spm=1001.2014.3001.5501
  2. 二叉树的应用:https://kunnan.blog.csdn.net/article/details/115935678

在计算机中,由于经常要做的事情是判断真假、比较大小、排序、挑选最大值这类的操作,而它们在计算机的世界里又如此重要,当然也就值得为这些事情专门设计一种数据结构,这种数据结构被称为二叉树。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-08-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 iOS逆向 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • I 计算机的数据结构
    • 1.1专业画家画金鱼的方法
      • 1.2 数据就等同于点,数据结构就是数据中常用的具体关系
        • 1.3 线性表
        • II 数组、链表和哈希表
          • 2.1 数组
            • 2.2 链表
              • 2.3 哈希表
                • 2.4 小结
                • III 索引带来搜索的效率、灵活性
                • IV 二叉树的来源
                相关产品与服务
                腾讯云 BI
                腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档