IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构背后的生活哲理 -> 正文阅读

[数据结构与算法]数据结构背后的生活哲理

绪论

1. 数据结构
对于数据结构本身,它是运用计算机解决问题过程中对问题的抽象与分解的产物。很多数据结构是 协同使用的。在需要的时候就去调用相应的数据结构。如在图的广度优先遍历中,就是对图这种数据结构的操作需要了队列这样一种辅助的数据结构。而对于图的深度优先遍历,则是利用了系统给我们提供的栈,我们才能去实现递归调用的程序。
即我们对许多问题,是可以分开来考虑的。将每步运用上自己学习的知识,对它进行解决。最后每步的解决导致了整个看起来很大的问题的解决。这样的处理是先见森林,再见树木。例如对于未来的规划,看起来是一个很宏大的处理,但我们如果先将其落实到每一年,再在每一年落实到每个月,每个月到周,周到日,日到小时,小时到分钟。如此,一头牛也就轰然倒塌。长跑亦是如此。只能看见1km的人是悲哀的。如果每迈出一步,你就能在心中告诉自己——我又迈出了一步。那么你的心中会有一种荣耀感。这种荣耀感能激励你继续向下跑。

2. 数据结构的存储结构与逻辑结构
数据结构还需注意的一点是它的逻辑结构与物理结构并不是一体的。存储可以和具体的逻辑分开。不是说我想表达的是树的逻辑结构,就非得采用二叉链表的形式去存储。而对于链式关系来说,仍然可以采取顺序存储的方式去做到。总而言之,不能在我们脑中将逻辑结构与物理结构捆绑在一起。
即不要带有偏见或者固有的立场去处理事情。要能看到事物的多样化发展。并不是说玩游戏就会阻碍正常成长,加以适当引导也能收获不少。成功的途径也并非只有赚钱一条路,达到自己的自我价值实现也是一种成功。考试失利并不意味着你人生就完了,你只是需要换个方向去实现自己的价值罢了。如浙大的一位学生,他之前努力学习,门门满绩,但是有次考试,他因为前一天学的太累,而错过了考试。但是他在思考后,大彻大悟。决定只把时间花在自己喜欢做的事情上面,其他的及格就行。他喜欢的事情是打游戏和ICPC。他为了通关日本游戏,自学日语,翻译了一本日语算法书并出版;他打ICPC打到了世界冠军。故事中本人的描述 陈越姥姥的描述生活是一条小径分岔的花园,但不管你如何选择,终究能欣赏到花园中的美景。

3. 算法
和数据结构紧密相连的就是算法。算法的英语名称的来源是数学家花刺子模的名字(al-Khwarizmi)。 对于算法来说,算法是必须正确的,是针对规定的问题的可以在我们忍受的时间内得出解答的方法,步骤。因此其必须正确,高效。算法是将人脑中抽象的思想应用于问题后的解决方案。它终究是写给人看的。过于的抽象,别人根本理解不来。那就像说我有好想法,但是我没办法简单的表达出来,也是用处不大的。同时,算法也不能过于死板。生活中是充满着变化的。问题不是一成不变的,它的信息会发生变化,如果你的算法还能应对变化的情况,按照数理统计中对估计量的评判标准,我们可以近似的说算法的有效性高。用计算机的术语来说,就是算法的健壮性好。
更近一步,现在对于算法的描述都不够量化,都是定性的说明。而对于算法来说,可读性,健壮性并不适合量化,这些设计到个人的感受。当一件事情参杂了个人感受后,它就不够客观。剩下的就是算法的运行效率。但是算法的运行效率和输入是有关的。算法总能找到能让它运行效率高的数据。这样的比较是没有什么意义的。我们应当考虑最坏的情况,未雨绸缪,在事情还没发生之前就预料到它的发生,这样才能让事情在掌控范围内。也就是说,通过提高预测的范围,增大置信区间,去提高可信程度。
运行时间并不是所有。如果有算法能在1秒中得出答案,但是需要超级大的电脑内存。那它的用处也是不大的。因此,除去时间,空间也是在我们的考虑范围内。空间的评价和时间是类似的,只不过将单位进行改变。

基本线性结构

  1. 栈和队列
    最开始学习栈和队列的时候,总是不懂,为什么要去限制它们的操作?我用数组明明能更方便,不止能读取队首,队尾,栈顶,实现各种操作,我为什么还要做更深层次的封装呢?
    现在勉强能回答自己的疑问了。虽然我丧失了我更方便读取数据的能力。但是我的栈和队列使用上更方便了。它是变成了我们内化于心的一种数据结构,就像数组一样。我们并不需要去考虑这些数据结构是怎么实现的,我们只要用就好了。
    当我们将数组的运用视为当然的时候,我们的程序设计也就入门了。当我们将栈和队列视为当然的时候,我们的数据结构也就入门了。
    这样来说,对数据读写的限制反而方便了它的使用。这不得不说是塞翁失马焉知非福了。这也蕴含着更深刻的哲理,我们失去了一些东西的同时,我们也获得了一些东西;同样的,我们获得了一些东西,也失去了一些东西。世界是无私的,也是公平的。可能暑假花费时间看的一部电影激发了我们的灵感,从而提出了一个新想法,新项目。也可能在获得游戏游玩的快感,去失去了我们学习的时间。

线性结构的扩展

  1. AVL树
    不知大家想过没有,为什么AVL树非得在每次插入一个结点就去调整,而不是等插入结点结束之后才去调整?
    首先,树作为一种动态的数据结构,我们并不能确定哪个时候才是输入的终结。可能就真的是从1到无穷大了。因此在所有数据插入结束后,再去调整不是太现实。其次,在插入后调整,能保证下次的树就能满足平衡的要求。这警示我们如果发现了错误,就要即使改正,而不是等到已经改不掉再去懊恼当时为啥没改正。勿以善小而不为,勿以恶小而为之。

  2. B-树

对于B树这种数据结构来说,累了,睡觉,明天上完课再说。

查找

排序

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-12-09 11:55:23  更:2021-12-09 11:57:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/10 2:38:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码