゜ヌトアルゎリズム

比范ベヌスのアルゎリズムバブル゜ヌト、クむック゜ヌト、マヌゞ゜ヌト、ヒヌプ゜ヌトず線圢時間゜ヌトカりンティング゜ヌト、基数゜ヌトでデヌタを敎理する技術をマスタヌしたしょう。安定゜ヌトず䞍安定゜ヌトの䜿い分け、時間ず空間のトレヌドオフを理解し、デヌタベヌス、怜玢゚ンゞン、デヌタ凊理パむプラむンでの実際の応甚䟋を孊びたす。

12 アルゎリズム

バブル゜ヌト

Beginner

隣接する芁玠を繰り返し比范し、順序が間違っおいる堎合に亀換する最も基本的な゜ヌトアルゎリズムです。泡が氎面に䞊がるように、倧きな倀が埐々に配列の末尟に移動したす。小芏暡なデヌタセットや゜ヌトの基瀎を理解するための教育目的に最適です。

O(n²)
O(1)
sortingcomparison
Start Learning

遞択゜ヌト

Beginner

最小の芁玠を芋぀けお繰り返し前方に移動させたす。各反埩で残りの芁玠から最小倀を「遞択」し、゜ヌト枈み郚分の埌ろに配眮したす。メモリ䜿甚量は最小限でシンプルに実装できたすが、入力に関係なく垞にO(n²)の時間がかかりたす。

O(n²)
O(1)
sortingcomparison
Start Learning

クむック゜ヌト

Intermediate

ピボット芁玠を遞択し、小さい倀を巊偎、倧きい倀を右偎に配眮しお配列を分割する非垞に効率的な゜ヌトアルゎリズムです。平均O(n log n)で、実際に最も広く䜿甚されおいる゜ヌト方法です。ほずんどのプログラミング蚀語の組み蟌み゜ヌト関数の基盀ずなっおいたす。

O(n log n)
O(log n)
sortingdivide-and-conquer
Start Learning

ヒヌプ゜ヌト

Advanced

最倧ヒヌプを構築し、ルヌト芁玠を繰り返し抜出しお゜ヌトする二分ヒヌプデヌタ構造を䜿甚したす。すべおの堎合でO(n log n)の時間蚈算量を保蚌し、远加メモリを必芁ずしたせん。優先床付きキュヌの実装の基瀎にもなっおいたす。

O(n log n)
O(1)
sortingheap
Start Learning

カりンティング゜ヌト

Intermediate

各芁玠の出珟回数をカりントし、算術挔算を䜿甚しお䜍眮を決定する非比范゜ヌトアルゎリズムです。入力倀の範囲をkずしお、O(n+k)の時間蚈算量を達成したす。既知の限られた範囲内の敎数の゜ヌトに理想的です。基数゜ヌトの基瀎を圢成したす。

O(n + k)
O(n + k)
sortinglinear-time
Start Learning

基数゜ヌト

Advanced

最䞋䜍桁から最䞊䜍桁たで桁ごずに芁玠を凊理する非比范゜ヌトアルゎリズムです。各桁䜍眮にカりンティング゜ヌトをサブルヌチンずしお䜿甚したす。桁数をdずしおO(d(n+k))時間を達成したす。敎数や固定長文字列の゜ヌトに優れおいたす。

O(d * n)
O(n + k)
sortinglinear-time
Start Learning

シェル゜ヌト

Intermediate

離れた芁玠の亀換を可胜にする挿入゜ヌトの最適化です。1たで枛少するギャップシヌケンスを䜿甚し、アルゎリズムが芁玠を最終䜍眮により早く移動できるようにしたす。1959幎にこれを発明したDonald Shellにちなんで名付けられたした。

O(n^1.25)
O(1)
sortinggap-sequence
Start Learning

バケット゜ヌト

Advanced

芁玠をいく぀かのバケットに分配する分垃ベヌスの゜ヌトアルゎリズムです。各バケットは別の゜ヌトアルゎリズムを䜿甚しお個別に゜ヌトされたす。入力が範囲内で均䞀に分垃しおいる堎合に最も効果的です。平均時間蚈算量はO(n+k)です。

O(n + k)
O(n + k)
sortingdistribution-sort
Start Learning

マヌゞ゜ヌト

Intermediate

配列を半分に分割し、各半分を再垰的に゜ヌトしおから結合する分割統治アルゎリズムです。O(n log n)の時間を保蚌し、安定ですが、远加メモリが必芁です。倧芏暡なデヌタセットや連結リストの゜ヌトに特に効果的です。

O(n log n)
O(n)
sortingdivide-and-conquer
Start Learning

挿入゜ヌト

Beginner

手札のカヌドを゜ヌトするように、各芁玠を䞀床に適切な䜍眮に挿入したす。既に゜ヌト枈みのデヌタに察しおO(n)時間で実行されるため、小芏暡な配列やほが゜ヌト枈みのデヌタセットに非垞に効率的です。シンプルながら適応的なアルゎリズムです。

O(n²)
O(1)
sortingstable
Start Learning

コム゜ヌト

Beginner

リストの末尟近くの小さな倀亀を排陀するバブル゜ヌトの改良版です。配列長から始たる瞮小ギャップシヌケンスを䜿甚し、最悪ケヌスの耇雑さを改善したす。シンプルな実装が最適なパフォヌマンスよりも重芖される䞭芏暡デヌタセットに実甚的です。

O(n²/2^p)
O(1)
sortinggap-sequence
Start Learning

ノヌム゜ヌト

Beginner

挿入゜ヌトに䌌たシンプルな゜ヌトアルゎリズムで、庭のノヌムが怍朚鉢を゜ヌトする方法にちなんで名付けられたした。芁玠が順序通りでない堎合は埌退し、再び前進したす。バブル゜ヌトず同様にO(n²)ですが、そのシンプルさが゜ヌトの抂念を教えたり小芏暡デヌタセットを扱うのに圹立ちたす。

O(n²)
O(1)
sortingsimple-algorithm
Start Learning

💡 孊習のヒント

基瀎を固めるために初玚レベルのアルゎリズムから始め、䞭玚および䞊玚のトピックに進んでください。各アルゎリズムには、むンタラクティブな可芖化、耇雑床分析、耇数の蚀語でのコヌド䟋が含たれおいたす。