第五章楠神带领大家去学习了一些排序算法,算法不仅局限于是排序,其实解决问题实现功能的代码我们都可以称为算法。
算法是程序的灵魂,不同的人写出的代码从功能看是一样的,但从完全角度、运行效率上却有天壤之别,那就是用的算法不同。而算法的基石是数据结构。
说起数据结构,PHP程序员会很茫然,这个东西我们不理解是什么,似乎是一个可有可无的东西。PHP程序员使用传统算法和数据结构都比较少,因为很多算法都是包装好的,不用我们去操心具体的实现细节,如PHP数组的取栈操作array_pop,进栈操作array_push,都有指定的内置函数,导致我们对基础算法的研究越来越少,最后成为一个工具的傀儡而已。
PHP无时无刻都离不开数据结构,比如说PHP的数据类型字符串、数组、对象等,其实它们都是一种数据结构。因为封装的原因,导致很多PHP程序员从来没有感觉到数据结构和算法的存在。数据结构是基础,可能我们在写PHP代码的时候,大多都用不上,但是,掌握它们能让PHPer对程序的运作原理有更深的理解。
举个简单的例子:
php编程中会经常使用PHP数组,PHP数组不仅可以foreach的方式遍历,又能通过key-value的方式访问,我们都觉得很便利,那么问题来了,为神马会这样?
原因是PHP的数组,是个HashTable(哈希表,支持key-value直接映射),并且元素之间又用双向链表连接起来(支持遍历)。如果不学习数据结构,链表和hash都不知道,就更谈不上理解内部的运作原理。
这个只是数据结构应用的冰山一角,想对技术有深一些的理解,学好数据结构很有必要。而更好地掌握原理层,又可以促进我们对程序的优化和思考,采用更节省系统资源的方式完成我们的业务需求。
接下来几节我们一起去学习和认识常用的数据结构:链表、栈、队列等。数据结构可是大学课程里要学习的底层知识,不是我们几天就能全部概括的,只能去介绍一些皮毛,我们就当是让那些从没有任何编程基础的朋友去了解数据结构是什么样的。比较全面的数据结构知识还需朋友们自己去拓展学习。
关于“PHP数据结构与算法”的话题很少,楠神以前看过《韩顺平一周玩转算法》公开课,还是挺不错的,网上有视频可以去搜着看。接下来几节课,楠神直接拿韩顺平的笔记做介绍,和大家一块学习。