数据结构是否用于更高级别的语言?

时间:2009-03-24 01:43:30

标签: ruby data-structures

我目前还在上学并参加了用c ++实现数据结构的课程。在业余时间,我喜欢用“更高级”语言编程(大多数是带有一些c#的Ruby)。

因此,由于这些更高级别的语言为您管理内存,您将使用哪些数据结构?我可以理解对队列和堆栈的需求,但是你是否需要在Ruby中使用二叉树?还是2-3-4树?为什么呢?

感谢。

7 个答案:

答案 0 :(得分:8)

  

因此,这些更高级别的语言   为你管理记忆,会怎样   你使用数据结构?

使用数据结构的主要原因不是垃圾收集。但它是以某种方式存储数据的方式。所以最重要的是你如何组织数据。这正是语言无法自动解决的问题。

当然,高级语言将带有几个预加载的数据结构(你应该100%使用这些预加载的数据结构,而不是自己的),但不是所有的数据结构都是只要你可能需要。

数据结构以某种方式组织存储器,以便可以实现在其上运行的算法,从而提供有效的结果。

对于大多数任务,您不需要实现自己的数据结构。但这完全取决于你编码的内容。

  

我可以理解队列的必要性   和堆栈,但你需要   在Ruby中使用二叉树吗?

有很多使用二叉树的例子,但每天都没有共同的项目,例如你可能需要实现霍夫曼编码。

Other data structures可用于节省空间和快速查找使用trie,或者您可能需要使用btree快速查找存储大量数据。一些数据结构具有特定用途,并针对不同的事物进行了优化语言是否现代以及是否有垃圾收集都不会改变它。

然而,趋势是自定义实现的数据结构编码较少,并且考虑较少。常见算法也会出现类似的争论。在更现代的语言中,比如LINQ,您只需指定排序即可。你实际上并没有说如何排序。

答案 1 :(得分:6)

根据我使用Python的经验(表面上类似于Ruby),我从未必须实现二叉树或散列图或类似的东西。但之所以与托管内存关系不大。在标准库中有最有用的结构的实现,如字典(hashmaps)和列表;为了提高速度和效率,它们(至少部分地)以编写解释器的任何低级语言实现,并且它们几乎肯定会胜过您可能提出的任何自定义实现。

答案 2 :(得分:2)

总之,是的。

尽管GC会简化您的工作,但仍有许多情况下,能够恰当地组织数据的能力会让您编写更有效(或更高效)的程序。

答案 3 :(得分:2)

如果您希望能够有效地在已排序的集合中查找某些内容,则可以使用二叉树,这与任何其他语言相同。数据结构选择在任何语言中都很重要。它在高级语言中并没有变得那么重要,除了高级语言提供的大型库包含为您处理此问题的深思熟虑的智能设计,在这种情况下您不必自己设计数据结构,但您必须知道要使用哪种内置数据结构。

Java Collections框架非常精彩,但如果您使用了错误的(不合适的)Collections对象,那么您的程序性能将受到影响。

此外,某些数据结构比其他数据结构更节省空间。是的,内存很便宜,现代GC语言将为您管理内存,但如果您处理大量数据,那么如果您可以提高内存效率,那么数据结构就很重要。

答案 4 :(得分:2)

大部分时间

你使用它们,但你不需要实现它们;他们是为你实施的。

例如,字典通常可以在内部实现为散列图和二叉树的组合。该列表可以实现为链接列表等。

但有时候

您可能想要实现数据结构,例如,您存储巨大的数据量(例如,数百万行文本)。我自己还没有遇到过这样的情况,我需要做这样的事情,但想到可能需要它的项目。 (例如,有效地打开和编辑大文本文件等)。

答案 5 :(得分:1)

我在Ruby中专业编程并且我发现对数据结构的全面了解已经非常有用,尽管我从来没有在学校之外实现具有任何特定性能特征的树(尽管我必须实现树状结构。)

当您需要在多台计算机上进行扩展或在不同服务之间进行协调时,由于语言为您提供这些数据而在微规模上实现时看起来无关的相同数据结构往往会在“企业”中重新出现。知道在编写这些东西时可以使用哪些选项是一个有用的工具,可以放在后面。

答案 6 :(得分:1)

您将这些数据结构用于与其他语言完全相同的问题。区别仅在于现代语言。他们的标准库通常已经为它们提供了非常有效的实现。尽管如此,您仍然必须知道它们才能使用它们。 “更高级别”并不意味着真正的魔力。