我正在阅读一本算法书,介绍字符串,数组,字典,队列,堆栈等基本结构,以及排序算法等。
鉴于C#的数据结构,您是否需要从头开始构建自己的结构,或者创建自己的二进制搜索或者内置的任何内容?
答案 0 :(得分:4)
.NET框架仅包含常见数据结构和算法的基线,但未涵盖(也未尝试涵盖)所有内容。
所以是的,您肯定必须编写自己的数据结构,尝试和优先级队列,例如马上想到。在许多情况下,开源项目涵盖了广泛的算法和数据结构,因此不需要重新发明轮子,但总是需要更专业的实现和各个项目的不同优化。
答案 1 :(得分:2)
正如@BrokenGlass所说,.Net框架提供了许多基线数据结构。这是您的基本工具箱。开源项目是了解有关扩展和扩展这些工具的更多信息的好方法。因此,通常不需要重新发明轮子。
为了避免不必要地编写自己的数据结构,最好问一下,“是否有一些库应该符合我的要求:x,y,z?”
那就是说,我不会阻止你在你看到需要的时候编写自己的数据结构 - 事实上,从学术角度来看,我鼓励它。这种经验将为您提供所需的知识:
答案 2 :(得分:0)
.NET缺少许多常见的数据结构,这些数据结构位于其他语言的更全面的库中(例如C ++标准模板库)。
我过去曾使用过C5和Wintellect的Power Collections。在这两个中,我更喜欢C5用于收藏,而Wintellect用于算法。
答案 3 :(得分:-4)
啊;)阅读本书到最后;).NET标准类没有涵盖的大量边缘案例。