为什么在网上几乎找不到 PHP 版本的数据结构和算法类的资料

资料比如:书籍、视频、GitHub项目......
我在百度、GitHub、知乎、微信公众号都搜索了,大都是很零碎的一些资料。
并没有一个完整的体系,带领 PHPer 学习乃至精进数据结构和算法

php
二毛
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
yema
最佳答案

我也找过,没找到以PHP为基础语言去讲解算法的。很多也都知道去使用的别的语言,如C,java相关的算法书籍,但是这样又增加了学习成本。
所以最好是学习C,在去学习算法相关的。相当于曲线学习了。但要花费很多的时间,以及是否能够坚持的下去。

4年前 评论
程序员二毛 (楼主) 4年前
讨论数量: 13
AScorpio

数据结构与算法是通用的,并不是说用别的语言学完就用不上了。我觉得这个跟PHP的历史有关,早期作为嵌入HTML中的脚本语言,是不太适合,用复杂的算法,而且也用不上。而且作为追求性能的代码,解释型的语言又不给力。一点小见解

4年前 评论

file 英文版的很多,找不到只是你搜索资源的方式不对

4年前 评论

实际上,正如@AScorpio 所说,数据结构与算法是通用的。先了解某个特定数据结构的特点,再讨论其对应的算法 是其学习思路。

如果你真的想实践的话,建议学习一下 c/c++ 基础(了解基本数据类型流程语法结构体指针即可)然后就可以上手实现结构和对应算法,并体会其解决问题的思路。

对于 PHP 算法相关的解决,已经不需要写太多的实现了。PHP SPL (默认自带)和 PHP Data Structures (需要额外安装扩展)提供了定长数组(SplFixedArray),大顶堆小顶堆(SplMaxHeap、SplMinHeap,与堆排序算法相关),向量(Ds\Vector),映射(Ds\Map)等数据结构,了解他的结构、特点即可简单应用,写出高性能的代码。

注: PHP 的数组严格意义上来说是按照有序列表实现,SplFixedArray 才是在数据结构与算法里面说的,通常意义上的数组

参考资料

[英文]PHP: Data Structures - Manual
[目录是中文,详细内容是英文]PHP: 数据结构 - Manual

4年前 评论
4年前 评论
whcoding 4年前
夏天 4年前
_flyfish_ (作者) 4年前
whcoding 4年前
_flyfish_ (作者) 4年前

这个和语言没啥关系,你换个语言就不能实现了?php实现的时候最好少用数组函数。

4年前 评论
4年前 评论
程序员二毛 (楼主) 4年前

Leetcode上有PHP版的算法题和讲解

4年前 评论
xianyunyehe

其实数据结构和算法 是不区分语言的,但是我还是不建议你用php去实现各种算法。因为PHP中缺少很多数据类型,也模糊一些了类型。导致给我们使用便利的同时,导致开发者不能理解本质。举个例子,PHP中没有数组 ,PHP中的数组,就是哈希表 数据结构的很多结构都是从数组开始的,但是PHP没数组这个基本的结构,你不能用 PHP的 “数组” 去模拟。学数据结构和算法,那我肯定推荐C了。因为C的结构很少。大部分都需要动手实现。这样更能加深你理解。

PHP封装了大量的函数,模糊了数组和哈希之间的关系,不推荐你用PHP实现

4年前 评论
程序员二毛 (楼主) 4年前
yema

我也找过,没找到以PHP为基础语言去讲解算法的。很多也都知道去使用的别的语言,如C,java相关的算法书籍,但是这样又增加了学习成本。
所以最好是学习C,在去学习算法相关的。相当于曲线学习了。但要花费很多的时间,以及是否能够坚持的下去。

4年前 评论
程序员二毛 (楼主) 4年前
wenqingzzz

推荐java版本 韩顺平的数据结构和算法。看了好几遍很不错。

4年前 评论
程序员二毛 (楼主) 4年前

Leetcode 吧

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!