Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 手動による配列ソート | 配列の操作とソート
C# 配列

手動による配列ソート

メニューを表示するにはスワイプしてください

ソートはプログラミングにおける基本的な操作であり、データを整理することで検索、分析、情報の提示をより効率的に行うことが可能となる。C#には配列をソートするための組み込みメソッドが用意されているが、ソートアルゴリズムの仕組みを理解することで、アルゴリズム的思考問題解決力を深めることができる。selection sortのような手動ソートアルゴリズムを学ぶことで、要素がどのように比較され、順番に移動してソート済み配列が完成するかを段階的に把握できる。この理解は、カスタムソートロジックが必要な場合や、ライブラリのサポートが限られている環境で作業する際に重要となる。

Note
定義

Selection sortは、配列の未ソート部分から繰り返し最小(昇順の場合)または最大(降順の場合)の要素を選択し、それをソート済み部分の正しい位置に移動させる単純なソートアルゴリズム。

Program.cs

Program.cs

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
using System; namespace ConsoleApp { public class Program { public static void Main(string[] args) { int[] numbers = { 5, 2, 9, 1, 5, 6 }; Console.WriteLine("Original array:"); PrintArray(numbers); SelectionSortAscending(numbers); Console.WriteLine("Sorted array (ascending):"); PrintArray(numbers); } public static void SelectionSortAscending(int[] array) { int n = array.Length; for (int i = 0; i < n - 1; i++) { int minIndex = i; for (int j = i + 1; j < n; j++) { if (array[j] < array[minIndex]) { minIndex = j; } } int temp = array[i]; array[i] = array[minIndex]; array[minIndex] = temp; } } public static void PrintArray(int[] array) { foreach (int num in array) { Console.Write(num + " "); } Console.WriteLine(); } } }

選択ソートは、配列を整列済み部分と未整列部分に分割して動作します。各ステップで、未整列部分から最小の要素を選択し、それを未整列部分の先頭の要素と交換することで、整列済み部分を1つずつ拡張していきます。

上記のコードでは、配列の最後の要素を除く各要素に対してループを開始します。各位置iについて、残りの配列(i + 1から末尾まで)で最小値を探します。より小さい要素が見つかった場合、minIndexを更新します。内側のループが終わった後、位置iの要素とminIndexの要素を交換し、最小値が現在の位置に配置されるようにします。この処理を繰り返すことで、配列全体が昇順に整列されます。

Program.cs

Program.cs

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
using System; namespace ConsoleApp { public class Program { public static void Main(string[] args) { int[] numbers = { 3, 8, 4, 7, 2, 9 }; Console.WriteLine("Original array:"); PrintArray(numbers); SelectionSortDescending(numbers); Console.WriteLine("Sorted array (descending):"); PrintArray(numbers); } public static void SelectionSortDescending(int[] array) { int n = array.Length; for (int i = 0; i < n - 1; i++) { int maxIndex = i; for (int j = i + 1; j < n; j++) { if (array[j] > array[maxIndex]) { maxIndex = j; } } int temp = array[i]; array[i] = array[maxIndex]; array[maxIndex] = temp; } } public static void PrintArray(int[] array) { foreach (int num in array) { Console.Write(num + " "); } Console.WriteLine(); } } }

このコードは、Programクラス内にMainメソッドを定義し、整数配列を選択ソートで降順に並べ替える方法を示しています。まず、numbers配列を初期化し、元の内容を出力します。その後、SelectionSortDescendingメソッドを呼び出して、配列を大きい順に並べ替えます。このメソッドは、未整列部分から最大値を繰り返し探し、未整列部分の先頭の要素と交換することで動作します。ソート後、プログラムは更新された配列を出力し、要素が降順に並んでいることを示します。

1. 選択ソートの計算量はどれですか?

2. 選択ソートはバブルソートとどのように異なりますか?

3. 組み込みメソッドを使わずに手動でソートを実装する理由は何ですか?

question mark

選択ソートの計算量はどれですか?

正しい答えを選んでください

question mark

選択ソートはバブルソートとどのように異なりますか?

正しい答えを選んでください

question mark

組み込みメソッドを使わずに手動でソートを実装する理由は何ですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  3

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 3.  3
some-alt