0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

データ構造_一覧

Last updated at Posted at 2025-03-01

1. 配列ベースのデータ構造

・配列 (Array): 最も基本的なデータ構造。インデックスで直接アクセス可能(O(1))だが、挿入・削除は効率が悪い(O(n))
・動的配列 (Dynamic Array): サイズを動的に変更できる配列(JavaのArrayListなど)
・スタック (Stack): LIFO(後入れ先出し)の原則で動作する配列
・キュー (Queue): FIFO(先入れ先出し)の原則で動作する配列

2. リンクベースのデータ構造

連結リスト (Linked List): 各要素がデータと次要素へのポインタを持つ

・単方向連結リスト:前方向のみの連結
・双方向連結リスト:前後両方向の連結

・スキップリスト (Skip List): 複数の層を持つ連結リストで、検索を高速化したもの

3. ツリーベースのデータ構造

・二分探索木 (Binary Search Tree): 各ノードが最大2つの子ノードを持ち、左の子は親より小さく、右の子は親より大きい値を持つ
・AVL木: 自己平衡二分探索木の一種
・赤黒木 (Red-Black Tree): 別の自己平衡二分探索木で、多くの言語の標準ライブラリで使用される
・B木/B+木: ディスクアクセスを最適化した多分木で、データベースでよく使われる
・トライ (Trie): 文字列検索に特化した木構造

4. ハッシュベースのデータ構造

・ハッシュセット (HashSet): 重複のない要素の集合
・ハッシュマップ (HashMap)
"わかりやすいのでこちら参照": キーと値のペアを格納
・ブルームフィルタ (Bloom Filter): 要素が集合に属しているかを確率的に判定する構造

5. グラフベースのデータ構造

・隣接リスト (Adjacency List): ノードに隣接するノードのリストを保持
・隣接行列 (Adjacency Matrix): 行列でノード間の関係を表現

6. 特殊なデータ構造

・ヒープ (Heap): 優先度付きキューを実装するための木構造
・ディスジョイントセット (Disjoint Set/Union-Find): 要素の集合を効率的に管理
・セグメント木 (Segment Tree): 区間クエリを効率的に処理

各データ構造には、特定の操作に対して得意・不得意があり、用途に応じて適切なものを選ぶことが重要です。
例えば:

頻繁な検索が必要:ハッシュマップか二分探索木
順序付きデータ:赤黒木やAVL木
範囲検索:B+木やセグメント木
文字列検索:トライ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?