【发布时间】:2011-07-03 16:02:25
【问题描述】:
我正在阅读一本算法书,阅读基本结构,如字符串、数组、字典、队列、堆栈,以及排序算法等。
鉴于 C# 的数据结构,您是否需要从头开始构建自己的结构,或者创建自己的二进制搜索或为您内置的任何东西或这些东西?
【问题讨论】:
-
即使你从来没有自己构建过,你仍然需要阅读那本书才能知道何时使用哪本书。
标签: c# data-structures
我正在阅读一本算法书,阅读基本结构,如字符串、数组、字典、队列、堆栈,以及排序算法等。
鉴于 C# 的数据结构,您是否需要从头开始构建自己的结构,或者创建自己的二进制搜索或为您内置的任何东西或这些东西?
【问题讨论】:
标签: c# data-structures
.NET 框架仅包含通用数据结构和算法的基线,但并未涵盖(也未尝试涵盖)所有内容。
所以是的,您肯定必须编写自己的数据结构、尝试和优先级队列,例如马上就会浮现在脑海中。在许多情况下,有些开源项目涵盖了广泛的算法和数据结构,因此无需重新发明轮子,但与往常一样,个别项目可能需要更专业的实现和不同的优化。
【讨论】:
正如@BrokenGlass 所说,.Net 框架提供了许多基线数据结构。这是您的基本工具箱。开源项目是了解更多关于扩展和扩展这些工具的好方法。因此,通常没有必要重新发明轮子。
为了避免对自己的数据结构进行不必要的编码,最好问一下,“是否有一些库可以满足我的要求:x、y、z?”
也就是说,我不会阻止您根据需要编写自己的数据结构 - 事实上,从学术角度来看,我鼓励这样做。这段经历将为您提供以下所需的知识:
【讨论】:
.NET 缺少许多通用数据结构,这些数据结构在其他语言的更全面的库中(例如 C++ 标准模板库)。
我过去使用过C5 和Wintellect 的Power Collections。在这两者中,我更喜欢 C5 用于集合,但 Wintellect 用于算法。
【讨论】:
啊;) 把书读到最后 ;) .NET 标准类没有涵盖很多边缘情况。
【讨论】: