選択ソートアルゴリズムを理解する (Java の例付き)
選択の並べ替え: ステップバイステップガイド
選択ソートは、単純なソート アルゴリズムです。 リストの未ソート部分から最小の要素を繰り返し検索し、それを先頭に配置します。このプロセスは、リスト全体が並べ替えられるまで続きます。
選択の並べ替えの仕組み
この配列を昇順に並べ替える例を示してみましょう:
反復 1:
目標は、最小の要素を先頭に配置することです。最初の要素が最小であると仮定することから始めます。
現在の最小値と後続の各要素を比較し、より小さい要素が見つかった場合は最小値を更新します。
これは、実際の最小値が特定されるまで続きます。
最後に、最小要素と最初の要素を交換します。
最初の要素がソートされました。 後続の反復では、ソートされていない部分のみが考慮されます。
後続の反復:
このプロセスは、ソートされていない残りの要素ごとに繰り返されます。
アルゴリズムは n-1 回反復します (n は配列の長さです)。 5 回目の反復後 (6 要素配列の場合)、最後の要素が暗黙的に並べ替えられます。
選択ソートの実装 (Java):
import java.util.Arrays; public class SelectionSortTest { public static void main(String[] args) { int[] arr = {8, 2, 6, 4, 9, 1}; System.out.println("Unsorted array: " + Arrays.toString(arr)); selectionSort(arr); System.out.println("Sorted array: " + Arrays.toString(arr)); } public static void selectionSort(int[] arr) { int size = arr.length; // Iterate through the array size-1 times for (int i = 0; i < size - 1; i++) { int minIndex = i; // Find the minimum element in the unsorted part for (int j = i + 1; j < size; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } // Swap the minimum element with the first unsorted element int temp = arr[minIndex]; arr[minIndex] = arr[i]; arr[i] = temp; } } }
出力:
ソートされていない配列: [8, 2, 6, 4, 9, 1] ソートされた配列: [1, 2, 4, 6, 8, 9]
複雑さの分析:
- 時間計算量: すべてのケース (最良、平均、最悪) で O(n²)。 ネストされたループは、入力順序に関係なく、常に固定回数実行されます。
- 空間の複雑さ: O(1)。 これはインプレース アルゴリズムであり、一定の追加スペースが必要です。
結論:
Selection Sort の時間計算量は O(n²) であるため、大規模なデータセットでは非効率的になります。 小規模な配列や、パフォーマンスよりもシンプルさが優先される状況に最適です。
以上が選択ソートアルゴリズムを理解する (Java の例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











一部のアプリケーションが適切に機能しないようにする会社のセキュリティソフトウェアのトラブルシューティングとソリューション。多くの企業は、内部ネットワークセキュリティを確保するためにセキュリティソフトウェアを展開します。 ...

多くのアプリケーションシナリオでソートを実装するために名前を数値に変換するソリューションでは、ユーザーはグループ、特に1つでソートする必要がある場合があります...

システムドッキングでのフィールドマッピング処理は、システムドッキングを実行する際に難しい問題に遭遇することがよくあります。システムのインターフェイスフィールドを効果的にマッピングする方法A ...

intellijideaultimatiateバージョンを使用してスプリングを開始します...

データベース操作にMyBatis-Plusまたはその他のORMフレームワークを使用する場合、エンティティクラスの属性名に基づいてクエリ条件を構築する必要があることがよくあります。あなたが毎回手動で...

Javaオブジェクトと配列の変換:リスクの詳細な議論と鋳造タイプ変換の正しい方法多くのJava初心者は、オブジェクトのアレイへの変換に遭遇します...

eコマースプラットフォーム上のSKUおよびSPUテーブルの設計の詳細な説明この記事では、eコマースプラットフォームでのSKUとSPUのデータベース設計の問題、特にユーザー定義の販売を扱う方法について説明します。

Redisキャッシュソリューションは、製品ランキングリストの要件をどのように実現しますか?開発プロセス中に、多くの場合、ランキングの要件に対処する必要があります。
