浅谈数据结构与算法
前言
从毕业到现在,刚好四年,作为一名iOS程序员,很快就陷入了尴尬的境地,业务代码写的格外的烦躁,技术层出不穷,学习感到疲惫且乏味。那么我究竟要如何提升呢,这也就变得尤为重要了。总结面试,鹅厂等大厂对于数据结构和算法以及计算机原理方面的基础要求甚高,底层知识始终是万变不离其宗。下面简单的对数据结构和算法进行简单的描述,你就知道为什么要学习数据结构和算法了。
什么是数据结构?
在计算机科学中,数据结构(英语:data structure)是计算机中存储、组织数据的方式。
数据结构意味着接口或封装:一个数据结构可被视为两个函数之间的接口,或者是由[数据类型联合组成的存储内容的访问方法封装。
大多数数据结构都由数列、记录、可辨识联合、引用等基本类型构成。举例而言,可为空的引用(nullable reference)是引用与可辨识联合的结合体,而最简单的链式结构链表则是由记录与可空引用构成。
数据结构可透过编程语言所提供的数据类型、引用及其他操作加以实现。一个设计良好的数据结构,应该在尽可能使用较少的时间与空间资源的前提下,支持各种程序运行。
不同种类的数据结构适合不同种类的应用,部分数据结构甚至是为了解决特定问题而设计出来的。例如B树即为加快树状结构访问速度而设计的数据结构,常被应用在数据库和文件系统上。
正确的数据结构选择可以提高算法的效率。在计算机程序设计的过程中,选择适当的数据结构是一项重要工作。许多大型系统的编写经验显示,程序设计的困难程度与最终成果的质量与表现,取决于是否选择了最适合的数据结构。
系统架构的关键因素是数据结构而非算法的见解,导致了多种形式化的设计方法与编程语言的出现。绝大多数的语言都带有某种程度上的模块化思想,透过将数据结构的具体实现封装隐藏于用户界面之后的方法,来让不同的应用程序能够安全地重用这些数据结构。C++、Objective-C、Python等面向对象的编程语言可使用类,计算机科学类 (计算机科学)")来达到这个目的。
以上我觉得我浅薄的知识不足以描述的如此详尽,故借用维基百科,地址奉上:
维基百科
这一堆文字估计看的也是云里雾里,可能你还是不知道为说明要学习数据结构与算法
为什么学?
-
知道算法为什么能解决问题的思想,知道优化代码从何下手
-
除了标准的数组和字典之外,了解一些其它的数据结构的思想,让你在构建自己的 App 时拥有更多的选择,比如Objective-c中,自己实现weak等思想
-
程序的性能瓶颈往往都跟算法和数据结构有关系,对于小规模的数据量可能我们是看不到效果的,因为哪种算法在我们感知的范围是相处无几,但是当数据量过大时,那么感知就会比较明显。下午例子为证:
屏幕快照 2019-05-07 上午9.24.03.png -
将数学公式用代码表现
-
面试!面试!面试!重要的事情说三遍
现在差不多该清楚,为什么要学习数据结构和算法了吧
网友评论