次の記事では、C# のバブル ソートの概要を説明します。バブル ソートは、最も単純なアルゴリズムと考えられる並べ替えアルゴリズムであり、要素または数値を特定の順序で配置し、これらの要素は最終的に配列内の並べ替えられた適切な場所に配置されます。
バブル ソートが機能する基本概念は、配列が考慮されるということです。この配列は、最初のインデックスから最後のインデックスまで反復されます。配列をトラバースする際に、隣接する要素と比較され、要素が間違った順序で存在する場合は交換されます。これは、特定のインデックスで数値が現在の要素よりも小さい場合、数値が交換されることを意味します。このプロセスは、配列が完全にソートされるまで繰り返されます。それはパスの形で行われます。
7 つの乱数の配列を考慮して並べ替えてみましょう:
バブルソートはパスの形式で機能します。これらのパスは、隣接する 2 つの数値を一度に取得し、それらの 2 つの数値を比較します。存在する数値が N であるとします。データ セットを並べ替えるのに必要なパスの数は N – 1 です。各パスでは、これら 2 つの数値を考慮してデータが並べ替えられ、すべての数値が期待どおりに並べ替えられなくなるまでシーケンスが繰り返されます。
パス 1:
90 76 45 93 68 13 98
最初のパスでは、最初の 2 つの数値が比較されます。ここでは 90 と 76 を比較します。90 は 76 より大きいため、交換されます。
76 90 45 93 68 13 98
ここで、90 は 45 と比較されます。(0 も 45 より大きいです。したがって、これは 45 と交換されます。
76 45 90 93 68 13 98
これで、90 と 93 はすでに順番に並んでいます。これらは交換されず、そのまま残ります。したがって、このパスはアルゴリズムに従って停止されます。
パス 2:
76 45 90 93 68 13 98
このパスは再び配列の最初の番号から始まります。これは、並べ替えが 76 から開始されることを意味します。76 は 45 と比較されます。76 より小さい 45 は 76 と交換されます。
45 76 90 93 68 13 98
今度は 76 と 90 がチェックされます。それらはすでに正しい順序になっているため、配列に変更はありません。
このようにして、配列の終わりまで走査が行われます。
以下に例を示します:
バブル ソートを実装するための C# プログラム。
コード:
using System; class Bubble { static void bubbleSrt(int []arr) { int num = arr.Length; for (int i = 0; i < num - 1; i++) for (int j = 0; j < num - i - 1; j++) if (arr[j] > arr[j + 1]) { // swap tmp and arr[i] int tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp; } } /* Printing the array */ static void printIt(int []arr) { int n = arr.Length; for (int i = 0; i < n; ++i) Console.Write(arr[i] + " "); Console.WriteLine(); } // Main method public static void Main() { int []arr = {90, 76, 45, 93, 68, 13, 98}; bubbleSrt(arr); Console.WriteLine("Sorted array"); printIt(arr); } }
出力:
上記のプログラムには、バブル ソートを使用して数値を並べ替えるメソッドが定義されています。バブルソートには、配列を走査し、一時変数 tmp に交換される数値を格納する 2 つの for ループがあります。この tmp 値は、インデックス j を使用して、本来あるべき位置と交換されます。別の方法を使用して、ソートされた配列を出力します。バブル ソートでは、n – 1 パスを使用して配列をソートします。
バブルソートは降順でも実装できます。
降順でのバブル ソートを実装する C# プログラムは次のようになります:
コード:
using System; public class BubbleSrt { public static void Main(string[] args) { int[]arr=new int[10]{23,98,45,12,9,16,65,74,34,29};//Array created with 10 unsorted numbers bubblesort(arr,10); int a; for(a = 0; a < 10; a++) Console.Write(arr[a]+"\t");//Printing the array after sorting in descending order Console.ReadLine(); } //bubble sort static void bubblesort(int[] data, int n) { int a; int b; for(a = 0; a < n; a++) for (b = n-1; b > a; b--) if (data[b] > data[b-1])//Condition to arrange array in descending order { int temp = data[b]; data[b]=data[b-1]; data[b-1]=temp; } } }出力:
ここでは、配列を降順にソートしています。 10 個の数値を持つ配列を宣言しました。その後、メインプログラムで bubblesort 関数を呼び出し、降順で出力します。ここの bubblesort 関数は、配列を走査するために 2 つの変数を受け取ります。ここでは、2 つの for ループを使用して配列を走査し、配列内に存在する値を比較しています。インデックス b とインデックス b – 1 にデータが存在するという条件で比較されます。 b に存在する数値の方が大きい場合は、交換されます。これは内側の for ループで行われます。一度交換されると、配列の最後まで継続されます。
結論
バブルソートは最も単純な並べ替え方法です。これは配列全体を走査し、数値をバブルポップすることで、配列を交換して正しい順序に戻すのに役立ちます。隣接する 2 つの数値を比較し、予想される順序でない場合はそれらをポップします。 C# を使用したこの並べ替えは非常に簡単で、配列内に存在する基本的な変数を使用して実行できます。
以上がC# のバブルソートの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。