列表,集合,地图,树和图的排序算法

时间:2014-11-01 15:41:38

标签: algorithm data-structures

大多数排序算法(插入排序,冒泡排序,快速排序,合并排序等)已用list解释。我们不是有针对Map,Graph,Tree的特定排序算法吗?

1 个答案:

答案 0 :(得分:0)

这是可能的,但并不常见。

如果需要排序树,通常按排序顺序构建它。重新排列树中的节点/分支是相当常见的。如果您要构建二叉搜索树,则可以重新排列节点以保持平衡。如果您在编译器中使用抽象语法树,则可以重新排列节点以优化计算。

地图是一个更抽象的结构,可以使用二叉搜索树,跳过列表,B树,哈希表等来实现。其中大多数预先设定内容的某些特定顺序。

图表基本上是树的概括。当然可以将某些类型的排序应用于图形(例如,图形上的拓扑排序是非常常规的)。如果数据具有自己的某种结构,通常使用图形,并将其减少为有序序列将丢失图形中的大量数据。

例如,图表的典型用途可能是将火车站表示为节点,并将这些站点之间的连接作为图中的弧线进行训练。然后,您可以走图表,找到通过铁路连接从一个城市到另一个城市旅行的方式。

从图表中提取数据子集(例如,城市名称)并将数据分类到序列中是有意义的,例如从出发时间排序的特定站点获取出发列表,以及列出每个目的地。您可能还希望生成(主要)目的地的排序列表以及每个目的地的出发时间。

这些实际上是提取数据,然后对提取的数据进行排序,而不是对图表本身进行排序。完整的原因(或者大多数原因,无论如何)图表首先被构建为图形,因为它包含的数据不会轻易地减少到一个特定顺序的单个列表。