Java はクイック ソート アルゴリズム (Quicktsort) を実装します。
クイック ソート アルゴリズムの概要
クイック ソートとマージ ソートはどちらも、分割統治法を使用してアルゴリズムを設計します。違いは、マージ ソートでは、それぞれソート後に配列を基本的に同じ長さの 2 つのサブ配列に分割することです。操作が実行され、サブ配列を分割するときのクイック ソートがより芸術的になります。 分割後、ベンチマーク要素の左側の要素はベンチマーク要素よりも小さくなりません。この方法では、2 つの部分配列を分離するだけでよく、マージ ソートのような結合操作は必要ありません。参照要素の選択は、アルゴリズムの効率に大きな影響を与えます。最良の場合は、2 つのサブ配列が基本的に同じサイズであることです。簡単にするために、最後の要素を選択します。より高度なアプローチでは、最初に中央値を見つけて、その中央値を最後の要素と交換し、同じ手順を実行します。分割はクイックソートの中核です。クイック ソートの最悪の実行時間は O(n2) ですが、予想される実行時間は O(nlgn) です。
クイックソートアルゴリズム Java 実装
1. 配列を 2 つのサブ配列とベース要素に分割します。最後の要素をベース要素として選択し、インデックス変数はベースよりも小さい最新の要素の位置を記録します。基本要素よりも小さい新しい要素が見つかると、インデックスが 1 ずつ増加します。最初の要素から最後から2番目の要素まで順にベース要素と比較し、ベース要素より小さい場合はインデックスを1つ増やし、位置インデックスと現在位置の要素を入れ替えます。ループが終了すると、index+1 は基本要素のあるべき位置を取得し、index+1 を最後の要素と交換します。
2. 2 つのサブ配列 [start,index] と [index+2,end] をそれぞれソートします
「Insertsort の Java 実装」と同様に、まず配列ツール クラスを実装します。コードは次のとおりです:
public class ArrayUtils { public static void printArray(int[] array) { System.out.print("{"); for (int i = 0; i < array.length; i++) { System.out.print(array[i]); if (i < array.length - 1) { System.out.print(", "); } } System.out.println("}"); } public static void exchangeElements(int[] array, int index1, int index2) { int temp = array[index1]; array[index1] = array[index2]; array[index2] = temp; } }
クイック ソートの Java 実装とテスト コードは次のとおりです:
public class QuickSort { public static void main(String[] args) { int[] array = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3 }; System.out.println("Before sort:"); ArrayUtils.printArray(array); quickSort(array); System.out.println("After sort:"); ArrayUtils.printArray(array); } public static void quickSort(int[] array) { subQuickSort(array, 0, array.length - 1); } private static void subQuickSort(int[] array, int start, int end) { if (array == null || (end - start + 1) < 2) { return; } int part = partition(array, start, end); if (part == start) { subQuickSort(array, part + 1, end); } else if (part == end) { subQuickSort(array, start, part - 1); } else { subQuickSort(array, start, part - 1); subQuickSort(array, part + 1, end); } } private static int partition(int[] array, int start, int end) { int value = array[end]; int index = start - 1; for (int i = start; i < end; i++) { if (array[i] < value) { index++; if (index != i) { ArrayUtils.exchangeElements(array, index, i); } } } if ((index + 1) != end) { ArrayUtils.exchangeElements(array, index + 1, end); } return index + 1; } }
クイック ソート アルゴリズム (Quicktsort) の Java 実装に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。
