如果一个人用一种编程语言学习数据结构和算法,是否需要学习其他语言的数据结构和算法?当我即将开始一本书数据结构和算法在JavaScript中,因为我也想学习网络,它也对我的其他语言有帮助吗?
发布于 2014-10-03 15:19:21
数据结构和算法是独立于语言的概念。因此,一旦你用你最喜欢的语言掌握了它们,就很容易切换到另一种语言。
现在,如果您询问不同语言所具有的内置方法和API,它们确实不同,但您不应该在数据结构和算法中学习特定的API。
发布于 2014-10-03 15:32:55
是的..。而不是。
虽然算法和数据结构背后的概念,如空间和时间复杂性或可变性,是语言不可知论的,但有些语言可能根本不允许您实现其中的一些模式。
一个很好的例子是递归算法。在haskell这样的语言中,递归是迭代元素集合的最佳方法。在其他语言(如C )中,您应该避免在未绑定集合上使用递归算法,因为您可以很容易地达到堆栈的dept限制。您也可以很容易地想象一种甚至不是基于堆栈的语言,在这种语言中,递归算法是完全不可能实现的。您可以在这种语言的基础上实现堆栈,但它肯定比以不同的方式实现算法要慢。
另一个例子是面向对象的数据结构。有些语言,如haskell,不允许您更改值。这种语言中的所有元素都是不可变的,必须复制才能更改。这类似于在javascript中处理数字的方式,在javascript中,您不能更改值2,但您可以获取值2,将1添加到其中,然后将其存储到新的位置。像C这样的其他语言没有面向对象的编程(或者处理得很差)。这将分解您将在面向javascript的书中了解的大多数数据结构模式。
最后,这一切都归结为表现。您不像编写JavaScript或F#代码那样编写C代码。他们都有自己的怪癖,因此需要不同的实现,尽管这些算法和结构背后的想法将保持不变。您可以在不支持它的语言上模拟模式,就像C中的OOP,但是以不同的方式解决问题总是感觉更自然。
尽管如此,只要您停留在同一种语言中,您就可以重用这本书的80%+。外面有很多OOP语言。Javascript可能是其中最奇特的一种,因为它能够处理所有像字典这样的对象,以及它奇怪的“这个”概念,因此其中的许多模式将不适用于其他语言。
发布于 2022-03-10 04:44:46
当您使用另一种language.The时,无需学习数据结构和算法,所有的数据结构和算法都是某种“数学或逻辑思想”的实现。
例如,如果您学习排序算法,您必须了解快速排序和合并排序以及其他任何内容,不同排序协商的实现是基于几乎每种语言都具有的基本元素,例如varible、数组、循环等等。我的意思是,您可以不使用语言(如JavaScript)特性来实现它。
虽然它与语言无关,但我仍然建议您使用C.The,因为C是一种较低的高级语言,这意味着它接近于操作system.And,用C编写的算法比c++或.And更快。(大多数情况下).And C没有那么多特性,比如c++ stl或c++集合。在C++或Java中,它实现了hashmap itself.If --您是数据结构的新手,您最好从0到1实现它--而不是直接使用其他“工具”来懒惰。
https://stackoverflow.com/questions/26181785
复制相似问题