数据结构知识整理(一) 绪论 时间复杂度

本文是关于数据结构的入门介绍,强调了数据结构和算法在编程中的重要性。文章从计算机处理数据的角度出发,阐述了数据结构的本质,接着探讨了问题规模与复杂度度量的概念,特别是时间复杂度的计算。文中还提到了递推方程和接口、抽象数据类型(ADT)的基础知识,并通过例题帮助读者理解时间复杂度的求解方法。
摘要由CSDN通过智能技术生成

导语

大家好, 相信来自科班的朋友们都上过 数据结构 这门课, 即使不是科班出身, 这门课的重要性我相信在大家的心里不言而喻。不管对于考研还是找工作这门课都是非常重要的。

好了,现在在你的心里已经有了一点“这门课很重要”的概念,你可能还是没那么坚定,这门课到底为什么那么重要。

绪论

计算机的功能,说到底就是处理数据,与其说我们每天在电子世界里遨游,不如说我们每天泡在二进制世界里,计算机面对的是数不清的1和0。归根结底——这些1和0都是数据。
的确,数据就是计算机中最重要的,某种意义上来说也可以说是唯一的事物。

我们每天打交道的软件,我们都知道他们本质上都是一些程序和文档的组合。
文档暂且不说,那是属于 软件工程 这门课的内容了,我们就来说说程序。

程序员们每天进行的编程工作,实际上是在通过一些计算机能读懂的语言对他们发号施令,此时让我们闭上眼睛,穿越到计算机的内部,想象一下,计算机中的数据们正听着我们的号令,有序地排成一些队列,准备与他们的“敌人”——即将处理的那些任务一战。你要以怎样的方式排列他们?是把它们每个人排成一列,还是把它们排成“八卦阵”?这些数据排列的方式,就是数据结构了。

要面对敌人,光把士兵排好队也只能等死,士兵们还要进行攻击、防御等活动,才能打败敌人,那么,指挥士兵们如何进攻、如何防御的,就是算法了,在大多数开发过程中,遇到的敌人很菜,你不需要动很多脑筋,想特别复杂的算法,你的数据士兵就能获胜,比如我在豆瓣的一些算法书籍的书评中就看到有人说:“在我有限的编程生涯中几乎没碰到过算法的问题”。

但是,我们学习数据结构和算法的意义,不在于你在开发过程中到底用不用到这些,他们更接近于一种理论而不是实在的技术,但是通过学习他们,你可以更清晰地了解到你写出的程序、你的数据士兵们到底都是出于一种什么样的情况、甚至与他们产生感情。面对敌人,首先要知己,否则在你的数据士兵们眼中,你会是一个非常不亲民的指挥官。

在以后的过程中我会经常使用“指挥官与士兵”的比喻。

问题规模与复杂度度量

问题规模

我前面提到我们面对的“敌人”也就是我们要处理的问题,他们的体量是不同的,敌人有可能数量大,但是单个作战能力差,也可能数量小单兵作战能力强,但是这样把敌人进行归类,对于要处理很多问题的士兵

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值