再帰を使用してクイックソートを実行するC#プログラム
クイックソートは、分割統治法を使用するソートアルゴリズムです。ピボット要素を受け取り、正しい位置に配置します。次に、ピボット要素の左右の配列がクイックソートを使用して再度ソートされます。これは、配列全体がソートされるまで行われます。
C#で再帰を使用したクイックソートを示すプログラムは次のとおりです-
例
using System; namespace QuickSortDemo { class Example { static public int Partition(int[] arr, int left, int right) { int pivot; pivot = arr[left]; while (true) { while (arr[left] < pivot) { left++; } while (arr[right] > pivot) { right--; } if (left < right) { int temp = arr[right]; arr[right] = arr[left]; arr[left] = temp; } else { return right; } } } static public void quickSort(int[] arr, int left, int right) { int pivot; if (left < right) { pivot = Partition(arr, left, right); if (pivot > 1) { quickSort(arr, left, pivot - 1); } if (pivot + 1 < right) { quickSort(arr, pivot + 1, right); } } } static void Main(string[] args) { int[] arr = {67, 12, 95, 56, 85, 1, 100, 23, 60, 9}; int n = 10, i; Console.WriteLine("Quick Sort"); Console.Write("Initial array is: "); for (i = 0; i < n; i++) { Console.Write(arr[i] + " "); } quickSort(arr, 0, 9); Console.Write("\nSorted Array is: "); for (i = 0; i < n; i++) { Console.Write(arr[i] + " "); } } } }
出力
上記のプログラムの出力は次のとおりです。
Quick Sort Initial array is: 67 12 95 56 85 1 100 23 60 9 Sorted Array is: 1 9 12 23 56 60 67 85 95 100
上記のプログラムを理解しましょう。
main()関数では、最初に初期配列が表示されます。次に、関数quickSort()が呼び出され、配列に対してクイックソートが実行されます。このためのコードスニペットは次のように与えられます-
int[] arr = {67, 12, 95, 56, 85, 1, 100, 23, 60, 9}; int n = 10, i; Console.WriteLine("Quick Sort"); Console.Write("Initial array is: "); for (i = 0; i < n; i++) { Console.Write(arr[i] + " "); } quickSort(arr, 0, 9);
関数quickSort()では、Partition()関数を呼び出してピボット要素を選択します。次に、pivotの値に依存する引数を使用してquickSort()が再度呼び出されます。このためのコードスニペットは次のように与えられます-
if (left < right) { pivot = Partition(arr, left, right); if (pivot > 1) { quickSort(arr, left, pivot - 1); } if (pivot + 1 < right) { quickSort(arr, pivot + 1, right); } }
Partition()関数では、ピボット要素が提供された配列の左端の要素として選択され、配列内の正しい位置に設定されます。このためのすべての手順を示すコードスニペットは次のとおりです。
int pivot; pivot = arr[left]; while (true) { while (arr[left] < pivot) { left++; } while (arr[right] > pivot) { right--; } if (left < right) { int temp = arr[right]; arr[right] = arr[left]; arr[left] = temp; } else { return right; } }
-
Cプログラムで再帰を使用したバイナリからグレイコード
2進数は、0と1の2ビットしかない数値です。 グレイコードは、コードの2つの連続した番号というプロパティを持つ特殊なタイプの2進数です。 1ビット以上異なることはできません。グレイコードのこのプロパティにより、より多くのKマップ、エラー訂正、通信などが役立ちます。 これにより、バイナリからグレイコードへの変換が必要になります。それでは、バイナリをグレイコードに変換するアルゴリズムを見てみましょう。 再帰を使用する 。 例 グレイコードcoの例を見てみましょう Input : 1001 Output : 1101 アルゴリズム Step 1 : Do with input n : &nbs
-
Cアレイが回文であるか、再帰を使用していないかを確認するプログラム
配列arr[n]が与えられ、nは配列のあるサイズである場合、タスクは、配列が回文であるか、再帰を使用していないことを確認することです。回文は、MADAM、NAMANなどのように、同じように前後に読み取ることができるシーケンスです。 したがって、配列が回文であるかどうかを確認するために、-のように配列を前後にトラバースできます。 再帰では、開始値と終了値を等しくなるまで変更する必要があります。または、開始値と終了値が等しくない場合は、終了して、指定された配列が回文ではないことをfalseに返します。 例 Input: arr[] = { 2, 3, 4, 3, 2} Output: Y