堆和优先级队列,数据结构还是抽象数据类型?

问题描述 投票:0回答:1

我看过类似的问题,并阅读了很多答案。有人会认为我那时会知道,但是有些答案是矛盾的,现在我比开始时更加困惑。

我的追求开始于-堆和优先级队列之间有什么区别。在这里,我了解到Heap是一种数据结构,而Priority Queue是一种抽象数据类型。但是为什么呢?

到目前为止,我发现这个答案是最好的:简而言之,数据结构和抽象数据类型之间的关系与算法和伪代码之间的关系相同。第一个是想法,第二个是正式描述(抽象,无法访问)。

有人提到ADT是语言相关的术语。由于它描述了“标准库中未包含的数据类型”。因此,在Java或JS中,堆不在标准库中,但是以前我了解到堆是一种数据结构,而不是抽象数据类型?

一般人可以澄清什么是数据结构和抽象数据类型吗?

javascript java data-structures adt
1个回答
0
投票

Priority Queue是一种抽象数据类型,可以用许多不同的方式实现。

Heap是一种数据结构,可以用来实现您需要的任何东西。

使用堆来实现优先级队列是一个好主意,因为堆对数据的操作方式与优先级队列的工作方式非常吻合。如果选中documentation中的java.util.PriorityQueue,您将看到以下注释:

基于优先级heap的无限制优先级队列

您可以将ADT视为高级逻辑描述,而数据结构是数据类型的特定实现。

您可以使用其他数据结构实现优先级队列吗?当然,虽然效率可能不高。

© www.soinside.com 2019 - 2024. All rights reserved.