我对了解人们认为在编程中最有用的数据结构感兴趣。你经常使用哪种数据结构?
回答此帖应该帮助有兴趣找到适用于其问题的有用数据结构的新程序员。回答应该包括数据结构,相关信息或链接,它所使用的情况以及为什么它是解决这个问题的好选择(例如,理想的计算复杂度,简单性和理解等)。
每个答案只应涉及一个数据结构。
感谢任何人能够分享的智慧和经验。
我对了解人们认为在编程中最有用的数据结构感兴趣。你经常使用哪种数据结构?
回答此帖应该帮助有兴趣找到适用于其问题的有用数据结构的新程序员。回答应该包括数据结构,相关信息或链接,它所使用的情况以及为什么它是解决这个问题的好选择(例如,理想的计算复杂度,简单性和理解等)。
每个答案只应涉及一个数据结构。
感谢任何人能够分享的智慧和经验。
我一直发现栈有很多用途,尽管在面向对象编程中使用较少。实际上,所有数据结构都有其用途,而且它们并不复杂。尽可能多地学习。
我认为这里没有通用答案。它应该限定在某些使用情况下。
例如,在我作为程序员/经理的10多年职业生涯中,我从未使用过二叉树。我怀疑这并不意味着二叉树没有用处,而是在内核和嵌入式世界中,链表可能更适合。
实际上,当我考虑放弃一些异常时,我只使用了简单的链表。
即使在嵌入式系统中,它可能不是唯一使用的结构,我生活在低级硬件协议的世界中,可能会使用更多的数据结构...
为了基本的理解,你应该知道一些抽象数据类型(集合、字典、有序列表、队列、栈等)以及实现每个数据类型的几种方法及其相对权衡。
这可能需要你理解数组、链表(单向和双向)、哈希表、二叉搜索树(并了解简单平衡启发式算法)和二叉堆。如果你全面掌握它们,你就会迈向理解更复杂和有趣的数据结构的长路。此外,如果你已经实现了它们,你就拥有了一个你可以用于编程项目的可靠库(尽管像 Boost 等更适合生产代码的库显然更为稳定)。
这提供了非常有用的数据结构词汇,可能会对你编写程序的方式产生重大影响。例如,你可能会发现自己一直在使用许多队列的部分实现来解决问题,现在你可以用一个规范化的实现来替换它们。
这篇文章太过模糊。有无数的数据结构:数组,字典等等。每个数据结构都可以用来解决不同的问题。
如果针对特定问题询问数据结构会更加有效率。
快速排序
归并排序
冒泡排序
这些都是非常好的学习和理解它们如何工作的。排序很有趣,可以应用于许多领域 :)