Java 選択ソート アルゴリズムの実装とパフォーマンスの最適化手法
Java 選択ソート コードの完全な実装と最適化テクニック
Selection Sort は、シンプルで直感的なソート アルゴリズムです。その基本的な考え方は、un Sorts の最小 (または最大) 要素を配列内に取り込み、ソートされた配列の最後に配置します。配列全体が並べ替えられるまで、この手順を繰り返します。以下は、Java での選択ソートの完全な実装と最適化手法の詳細な説明です。
選択範囲の並べ替えの基本的な実装:
public class SelectionSort { public static void selectionSort(int[] arr) { int n = arr.length; for (int i = 0; i < n-1; i++) { int minIndex = i; for (int j = i+1; j < n; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } int temp = arr[minIndex]; arr[minIndex] = arr[i]; arr[i] = temp; } } public static void main(String[] args) { int[] arr = {64, 25, 12, 22, 11}; selectionSort(arr); System.out.println("排序后的数组:"); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } } }
上記のコードでは、まず選択範囲の並べ替えのメイン メソッド selectionSort(int[] arr)
を定義します。 main メソッドでは、最初に配列の長さを計算し、次に 2 つのネストされたループを通過して、ソートされていない部分の最小の要素を見つけ、それを現在の位置の要素と交換します。配列全体が並べ替えられるまで、この手順を繰り返します。最後に、main
メソッドでサンプル配列を定義し、並べ替えのために selectionSort
メソッドを呼び出します。
選択ソートの時間計算量は O(n^2) です。これは、要素の数が増加するにつれて、ソートに必要な時間が二次関数的に増加することを意味します。ただし、いくつかのテクニックを使用して、選択並べ替えの効率を向上させることができます。
最適化のヒント 1: 交換操作の数を減らす
選択ソートの各ラウンドで、ソートされていない部分の最小の要素を見つけて、それを現在の位置の要素と交換します。これは必要ですが、各スワップに 3 つの割り当てが必要な場合は、パフォーマンスに影響を与える可能性があります。最小要素のインデックス値を直接記録し、代入操作を 1 回だけ実行することで、交換の回数を減らすことができます。修正されたコードは次のようになります。
public class SelectionSort { public static void selectionSort(int[] arr) { int n = arr.length; for (int i = 0; i < n-1; i++) { int minIndex = i; for (int j = i+1; j < n; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } if (minIndex != i) { int temp = arr[minIndex]; arr[minIndex] = arr[i]; arr[i] = temp; } } } public static void main(String[] args) { int[] arr = {64, 25, 12, 22, 11}; selectionSort(arr); System.out.println("排序后的数组:"); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } } }
最適化のヒント 2: ソートされた部分をチェックする判定を追加します
各ラウンドで、ソートされていない部分を走査して最小の要素を見つけます。ただし、走査プロセス中に、ソートされた部分の最大の要素が未ソートの部分の最小の要素よりも小さいことが判明した場合、ソートは完了しており、ソート プロセスを早期に終了できます。修正されたコードは次のとおりです。
public class SelectionSort { public static void selectionSort(int[] arr) { int n = arr.length; for (int i = 0; i < n-1; i++) { int minIndex = i; boolean sorted = true; for (int j = i+1; j < n; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } if (arr[j] < arr[j-1]) { sorted = false; } } if (minIndex != i) { int temp = arr[minIndex]; arr[minIndex] = arr[i]; arr[i] = temp; } if (sorted) { break; } } } public static void main(String[] args) { int[] arr = {64, 25, 12, 22, 11}; selectionSort(arr); System.out.println("排序后的数组:"); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } } }
上記の最適化手法により、選択ソートの実行効率を向上させることができます。
概要:
選択ソートはシンプルですが非効率なソート アルゴリズムです。交換操作の削減やソート部分の判定を追加することで、選択ソートの効率を向上させることができます。ただし、選択ソートの時間計算量は O(n^2) ですが、一部の特定のシナリオでは依然として効果的なソート アルゴリズムです。
この記事が、選択の並べ替えを理解して実装し、最適化手法を通じてアルゴリズムの効率を向上させるのに役立つことを願っています。
以上が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)

ホットトピック









コンピューター技術の発展とハードウェアのパフォーマンスの向上により、マルチスレッド技術は現代のプログラミングに不可欠なスキルになりました。 C++ は、多くの強力なマルチスレッド テクノロジも提供する古典的なプログラミング言語です。この記事では、読者がマルチスレッド テクノロジをより適切に適用できるように、C++ でのマルチスレッド最適化手法をいくつか紹介します。 1. std::thread を使用する C++11 では、マルチスレッド テクノロジを標準ライブラリに直接統合する std::thread が導入されています。 std::thread を使用して新しいスレッドを作成します

再帰関数のパフォーマンスを最適化するには、次の手法を使用できます。 末尾再帰を使用する: 再帰呼び出しを関数の最後に配置して、再帰オーバーヘッドを回避します。メモ化: 計算の繰り返しを避けるために、計算結果を保存します。分割統治法: 問題を分解し、サブ問題を再帰的に解決して効率を向上させます。

ECharts チャートの最適化: レンダリング パフォーマンスを向上させる方法 はじめに: ECharts は、開発者がさまざまな美しいチャートを作成するのに役立つ強力なデータ視覚化ライブラリです。ただし、データの量が膨大になると、チャートのレンダリングのパフォーマンスが課題になる可能性があります。この記事は、具体的なコード例を提供し、いくつかの最適化テクニックを紹介することで、ECharts チャートのレンダリング パフォーマンスを向上させるのに役立ちます。 1. データ処理の最適化: データのフィルタリング: グラフ内のデータ量が多すぎる場合、データをフィルタリングして必要なデータのみを表示できます。たとえば、次のことができます

コンピューター技術の急速な発展に伴い、プログラミング言語も登場しています。中でも Go 言語は、そのシンプルさ、効率性、同時実行性能により大きな注目を集めています。ただし、特定のシナリオでは、パフォーマンスや互換性を向上させるために Go 言語コードを C 言語に変換する必要がある場合があります。この記事ではGo言語のコードをC言語に変換する実装方法と具体的なコード例を詳しく紹介します。 1. Go 言語の基本機能 Go 言語は、Google が開発したオープンソースのプログラミング言語です。学習が簡単で、同時実行性が高く、ガベージ コレクションが備わっています。

MySQL と PostgreSQL: パフォーマンスの比較と最適化のヒント Web アプリケーションを開発する場合、データベースは不可欠なコンポーネントです。データベース管理システムを選択する場合、MySQL と PostgreSQL の 2 つが一般的な選択肢となります。これらはどちらもオープンソースのリレーショナル データベース管理システム (RDBMS) ですが、パフォーマンスと最適化にはいくつかの違いがあります。この記事では、MySQL と PostgreSQL のパフォーマンスを比較し、最適化のヒントをいくつか紹介します。 2 つのデータベース管理を比較したパフォーマンスの比較

Golang キュー実装の最適化スキルと経験の共有 Golang では、キューは先入れ先出し (FIFO) データ管理を実装できる一般的に使用されるデータ構造です。 Golang はキュー (コンテナ/リスト) の標準ライブラリ実装を提供していますが、場合によっては、実際のニーズに基づいてキューを最適化する必要がある場合があります。この記事では、Golang キューをより効果的に使用するために役立ついくつかの最適化のヒントと経験を共有します。 1. シナリオに適したキューを選択し、Gol に実装します

Go の http.Transport は、HTTP クライアントによる接続の再利用を管理し、リクエストの動作を制御するための強力なパッケージです。 HTTP リクエストを同時に処理する場合、http.Transport の最大同時実行構成を調整することは、パフォーマンスを向上させる重要な部分です。この記事では、Go プログラムが大規模な HTTP リクエストをより効率的に処理できるように、http.Transport の同時実行の最大数を構成および最適化する方法を紹介します。 1.http.トランスポートのデフォルト

MyBatis は、XML またはアノテーションを介して SQL と Java メソッドのマッピングを実装し、データベースを操作するための便利な機能を多数提供する、人気のある Java 永続層フレームワークです。実際の開発においては、大量のデータをバッチでデータベースに挿入する必要がある場合があり、MyBatis のバッチ Insert ステートメントをいかに最適化するかが重要な課題となっています。この記事では、最適化のヒントをいくつか紹介し、具体的なコード例を示します。 1.BatchExecuを使用する
