首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >所有编程语言的数据结构和算法是否相同?

所有编程语言的数据结构和算法是否相同?
EN

Stack Overflow用户
提问于 2014-10-03 15:15:55
回答 5查看 8.9K关注 0票数 3

如果一个人用一种编程语言学习数据结构和算法,是否需要学习其他语言的数据结构和算法?当我即将开始一本书数据结构和算法在JavaScript中,因为我也想学习网络,它也对我的其他语言有帮助吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-10-03 15:19:21

数据结构和算法是独立于语言的概念。因此,一旦你用你最喜欢的语言掌握了它们,就很容易切换到另一种语言。

现在,如果您询问不同语言所具有的内置方法和API,它们确实不同,但您不应该在数据结构和算法中学习特定的API。

票数 6
EN

Stack Overflow用户

发布于 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可能是其中最奇特的一种,因为它能够处理所有像字典这样的对象,以及它奇怪的“这个”概念,因此其中的许多模式将不适用于其他语言。

票数 4
EN

Stack Overflow用户

发布于 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实现它--而不是直接使用其他“工具”来懒惰。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26181785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档