在处理大规模数据时,传统的单线程排序方法可能效率较低。C# 提供了强大的并行编程支持,其中 并行排序(ParallelSort) 是提升排序性能的有效手段。本文将从零开始,带你了解如何在 C# 中实现数组的并行排序,即使你是编程小白,也能轻松上手!
并行排序是指利用多核 CPU 的优势,将排序任务拆分成多个子任务,并行执行以加快整体排序速度。C# 本身没有内置名为 ParallelSort 的方法,但我们可以通过 System.Threading.Tasks.Parallel 类结合经典排序算法(如快速排序)来实现。
当你处理包含数百万个元素的数组时,传统 Array.Sort() 可能需要较长时间。而通过 C#多线程排序,我们可以显著缩短排序时间,尤其在现代多核处理器上效果更佳。这也是 数组高性能排序 的常用技巧之一。
下面我们将使用“并行快速排序”来实现自己的 ParallelSort 方法。为了简化逻辑,我们只对整数数组进行排序。
using System;using System.Threading.Tasks;public static class ParallelSorter{ // 公共入口方法 public static void ParallelSort(int[] array) { if (array == null || array.Length <= 1) return; ParallelQuickSort(array, 0, array.Length - 1); } private static void ParallelQuickSort(int[] array, int left, int right) { if (left >= right) return; int pivotIndex = Partition(array, left, right); // 当子数组足够大时才启用并行 if (right - left > 1000) { Parallel.Invoke( () => ParallelQuickSort(array, left, pivotIndex - 1), () => ParallelQuickSort(array, pivotIndex + 1, right) ); } else { // 小数组使用串行递归,避免线程开销过大 ParallelQuickSort(array, left, pivotIndex - 1); ParallelQuickSort(array, pivotIndex + 1, right); } } private static int Partition(int[] array, int left, int right) { int pivot = array[right]; int i = left - 1; for (int j = left; j < right; j++) { if (array[j] <= pivot) { i++; Swap(array, i, j); } } Swap(array, i + 1, right); return i + 1; } private static void Swap(int[] array, int i, int j) { int temp = array[i]; array[i] = array[j]; array[j] = temp; }} 只需调用静态方法即可:
class Program{ static void Main() { int[] numbers = new int[1000000]; Random rand = new Random(); for (int i = 0; i < numbers.Length; i++) { numbers[i] = rand.Next(); } Console.WriteLine("开始并行排序..."); var stopwatch = System.Diagnostics.Stopwatch.StartNew(); ParallelSorter.ParallelSort(numbers); stopwatch.Stop(); Console.WriteLine($"排序完成,耗时: {stopwatch.ElapsedMilliseconds} 毫秒"); }} Parallel.Invoke,它会为每个任务分配线程池线程,适用于中等规模的并行任务。Span<T> 和 Memory<T> 避免内存分配,或直接使用 Array.Sort(它内部已高度优化,有时比自定义并行快排更快)。通过本 ParallelSort教程,你已经掌握了如何在 C# 中实现高效的 C#并行排序。虽然 .NET 没有直接提供 ParallelSort 方法,但借助 Parallel 类和经典算法,我们可以轻松构建自己的高性能排序工具。记住,合理使用 C#多线程排序 能显著提升大数据场景下的程序响应速度,是每一位 .NET 开发者值得掌握的技能。
关键词回顾:C#并行排序、ParallelSort教程、数组高性能排序、C#多线程排序
本文由主机测评网于2025-12-18发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025129728.html