/ /リスト、セット、マップ、ツリー、グラフのアルゴリズムのソート - アルゴリズム、データ構造

リスト、セット、マップ、ツリー、グラフのアルゴリズムのソート - アルゴリズム、データ構造

ソートアルゴリズム(挿入ソート、バブルソート、クイックソート、マージソートなど)のほとんどはリストで説明されています。 Map、Graph、Treeのソートアルゴリズムはありませんか?

回答:

回答№1は0

それは可能ですが、珍しいことです。

ソートされたツリーが必要な場合は、通常は作成しますソートされた順序で。ツリー内のノード/ブランチを再配置するのはかなり一般的です。バイナリ検索ツリーを構築している場合は、ノードを並べ替えることでバランスを保つことができます。コンパイラで抽象構文ツリーを使用している場合、ノードを並べ替えて計算を最適化できます。

マップは、バイナリ検索ツリー、スキップリスト、Bツリー、ハッシュテーブルなどで実装できるより抽象的な構造です。これらのほとんどは、コンテンツの特定の順序を前提としています。

グラフは、基本的にはツリーの一般化です。 いくつかの種類のソートをグラフに適用することは可能です(グラフ上のトポロジカルなソートはかなり日常的です)。通常は、データに独自の構造があり、それを順序付けされたシーケンスに減らすグラフの中の大量のデータを失うことになります。

例えば、グラフの典型的な使用は、列車駅をノードとして表現し、それらの駅間の接続をグラフの円弧として列車化する。その後、グラフを歩いて、ある鉄道との接続を介して都市間を移動する方法を見つけることができます。

データのサブセットを抽出することは意味があります(例えば、都市の名前)を選択し、そのデータをシーケンスに分類する(例えば、特定の駅からの出発のリストを取得し、出発時間によって順序付けされ、それぞれの目的地を列挙する)。あなたは、(主要な)目的地のソートされたリストと、それぞれのために取る出発時間を作りたいと思うかもしれません。

これらは実際にデータを抽出することになります抽出したデータをソートし、グラフ自体をソートすることはありません。グラフが最初にグラフとして構築される理由の大部分(または理由の大部分)は、含まれているデータが1つの特定の順序で単一のリストに簡単に縮小されないためです。