C# を使用してクイック ソート アルゴリズムを作成する方法
クイック ソート アルゴリズムは効率的なソート アルゴリズムです。そのアイデアは、配列を次の方法でより小さなものに分割することです。分割統治のアイデア、サブ問題を再帰的に解決し、最後にそれらを組み合わせて問題全体の解決策を導き出します。
以下では、C# を使用してクイック ソート アルゴリズムを作成する方法を詳しく紹介し、関連するコード例を示します。
using System; class QuickSort { // 快速排序方法 public static void Sort(int[] arr, int low, int high) { if (low < high) { // 将数组划分成两部分 int partitions = Partition(arr, low, high); // 分别对划分后的两部分进行递归排序 Sort(arr, low, partitions - 1); Sort(arr, partitions + 1, high); } } // 划分数组,并返回划分位置 public static int Partition(int[] arr, int low, int high) { int pivot = arr[low]; // 基准元素 int left = low; int right = high; while (left < right) { // 从右往左找到第一个小于基准元素的元素 while (left < right && arr[right] >= pivot) right--; // 交换元素位置 if (left < right) Swap(arr, left, right); // 从左往右找到第一个大于基准元素的元素 while (left < right && arr[left] <= pivot) left++; // 交换元素位置 if (left < right) Swap(arr, left, right); } return left; } // 交换元素位置 public static void Swap(int[] arr, int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } // 测试代码 static void Main(string[] args) { int[] arr = { 5, 3, 8, 4, 2, 9, 1, 6, 7 }; Console.WriteLine("原始数组:"); for (int i = 0; i < arr.Length; i++) Console.Write(arr[i] + " "); Console.WriteLine(); Sort(arr, 0, arr.Length - 1); Console.WriteLine("排序后的数组:"); for (int i = 0; i < arr.Length; i++) Console.Write(arr[i] + " "); Console.WriteLine(); } }
実行結果は次のとおりです:
原始数组: 5 3 8 4 2 9 1 6 7 排序后的数组: 1 2 3 4 5 6 7 8 9
上記の例からわかるように、C# を使用してクイック ソート アルゴリズムを作成するのは、比較的シンプルで効率的な方法です。配列をすばやく並べ替えます。さまざまな並べ替えのニーズに適応するために、独自のニーズに応じて上記のコードをさらに変更および拡張できます。
概要
この記事では、C# を使用してクイック ソート アルゴリズムを作成する方法を紹介し、対応するコード例を示します。クイック ソートは、パフォーマンスが良く、理解と実装が容易な、効率的なソート アルゴリズムであり、実際の開発で広く使用できます。この記事が、C# プログラミング言語を学習および使用する際の皆様のお役に立てれば幸いです。
以上がC# を使用してクイック ソート アルゴリズムを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。