Javaの配列のクイックソート方法は何ですか?
Javaの配列を高速にソートする方法は、再帰を使用して実装されています。具体的な手順は以下の通りです。
- 日本語:配列の中から基準要素(ピポット)を選択します。それは配列の中のどんな要素でも構いません。
- 配列を2つのサブ配列に分割し、一方は基準要素以下の要素で構成され、もう一方は基準要素より大きい要素で構成されます。このプロセスは「分割」と呼ばれます。
- 新しく分割された2つのサブ配列それぞれに再帰的なクイックソートを実行する。
- マージされたソートされたサブ配列。
たとえば、クイックソートの分割プロセスは、さまざまな方法で実装できます。よく知られている方法は、以下の通りです。
- Hoareパーティション:配列の最初の要素を基準要素として選択し、配列の両端からスキャンを開始して、ポインターが出会うまで2つの要素を交換し、最後に基準要素をポインターが出会う位置と交換する。
- Lomuto分割:基準要素として配列の最後の要素を選択し、配列の先頭からスキャンを開始し、基準要素以下の要素をすべて左側に配置し、最後に基準要素を適切な位置に配置します。
どの分割方法を選んでも、クイックソートの時間計算量はO(nlogn)であり、空間計算量はO(logn)です。クイックソートはインプレースソートアルゴリズムであり、追加の空間は必要ありません。