クイックソート
Quick Sort
くいっくそーと
基準値(ピボット)を選び、それより小さい要素と大きい要素のグループに分割する処理を、各グループに再帰的に繰り返す分割統治の整列のアルゴリズム。平均の計算量はO(n log n)で実用上最も速い部類だが、ピボットの選び方が悪いと分割が偏り最悪O(n²)になる。安定な整列ではない。
Related
他の資格での定義
基準値(ピボット)を選び、それより小さい要素と大きい要素に分割する操作を再帰的に繰り返す整列アルゴリズム。平均計算量がO(n log n)と高速で、実用的に最も多く使われるソートの一つである。
基準値(ピボット)を選び、それより小さい値と大きい値に分割する操作を再帰的に繰り返す整列アルゴリズム。平均計算量はO(n log n)で高速だが、最悪の場合O(n²)になる。不安定ソート。
ピボット要素を選び、それより小さい要素と大きい要素に分割して再帰的に整列するアルゴリズム。平均計算量はO(n log n)だが最悪はO(n^2)。実用的には最速のソートアルゴリズムの一つで、多くの言語の標準ライブラリで採用。
基準値(ピボット)を選び、それより小さい要素と大きい要素のグループに分ける操作を、各グループに再帰的に繰り返して整列するアルゴリズム。平均の計算量はO(n log n)で実用上最も速い部類だが、ピボットの選び方が悪いと最悪O(n²)になる。
Past Exams
過去問での出題
過去問で 12 回出題(基本情報技術者試験 5・応用情報技術者試験 5・高度試験 午前Ⅰ 2)
- 令和8年度 基本情報技術者試験 科目A 公開問題 問2(IPA の PDF を新しいタブで開きます)
- 令和5年度 秋期 応用情報技術者試験 午前 問6選択肢(IPA の PDF を新しいタブで開きます)
- 令和5年度 秋期 高度試験 午前Ⅰ 問3選択肢(IPA の PDF を新しいタブで開きます)
- 令和5年度 春期 応用情報技術者試験 午前 問7(IPA の PDF を新しいタブで開きます)
- 令和5年度 春期 高度試験 午前Ⅰ 問3(IPA の PDF を新しいタブで開きます)
- 令和4年度 秋期 応用情報技術者試験 午前 問6選択肢(IPA の PDF を新しいタブで開きます)
- 令和元年度 秋期 応用情報技術者試験 午前 問8正解の選択肢(IPA の PDF を新しいタブで開きます)
- 平成30年度 秋期 基本情報技術者試験 午前 問6(IPA の PDF を新しいタブで開きます)
- 平成27年度 秋期 基本情報技術者試験 午前 問7(IPA の PDF を新しいタブで開きます)
- 平成26年度 秋期 応用情報技術者試験 午前 問6選択肢(IPA の PDF を新しいタブで開きます)
出典: 独立行政法人情報処理推進機構(IPA)の過去問題。問題文は IPA のサイトの PDF で確認できます。「選択肢」は、問題文ではなく選択肢に出たものです。用語名で照合しているため、関係の薄い問題が含まれることがあります。
Related
関連キーワードの用語
列を半分ずつに分割することを要素が1つになるまで繰り返し、整列済みの列どうしを併合(マージ)しながら全体を整列する分割統治のアルゴリズム。計算量はデータの並びによらずO(n log n)で、安定な整列である。併合のための作業領域が必要だが、順次アクセスで処理できるので、主記憶に入らない大量データの外部整列にも使われる。
関数や手続きが、処理の中で自分自身を呼び出すこと。問題を同じ形の小さな問題に分けて解くもので、階乗の計算、木構造のたどり方、クイックソートやマージソートなどの分割統治のアルゴリズムを簡潔に書ける。必ず再帰を止める条件(基底)が必要で、呼出しが深くなるとスタック領域を使い果たすスタックオーバフローに注意する。
大きな問題を同じ種類の小さな部分問題に分割し、部分問題をそれぞれ(多くは再帰的に)解いて、その結果を統合して元の問題の解を得るアルゴリズムの設計方法。マージソート、クイックソート、2分探索、高速フーリエ変換が代表例である。半分ずつに分けて統合をO(n)で行える場合、全体はO(n log n)になることが多い。
それぞれ整列済みの2つの列を、先頭どうしを比較して小さい方を取り出すことを繰り返し、1つの整列済みの列にまとめるアルゴリズム。マージともいい、要素数がm、nのときO(m+n)で処理できる。マージソートの統合の段階や、キーの順に並んだ複数の順編成ファイル(マスタファイルとトランザクションファイルなど)をまとめる処理に使われる。
整列済みのデータで、探索範囲の中央の値と目的の値を比較し、目的の値がある側の半分に範囲を絞ることを繰り返す探索の方法。1回の比較で範囲が半分になるので、データ数nに対する最大の比較回数は約log₂n回で、計算量はO(log n)である。データが整列している必要があり、追加・削除が多いデータでは整列を保つ費用がかかる。
隣り合う要素を比較して、順序が逆なら交換する操作を列の端から端まで繰り返し、大きい(または小さい)値を泡が浮かぶように端へ移していく整列のアルゴリズム。計算量は平均・最悪ともO(n²)と遅いが、仕組みが単純で、同じキーの要素の順序が保たれる安定な整列である。
