C# 实现快速排序算法的递归实例与解析

咖啡半糖
咖啡半糖
发布时间:2026-10-13| 5人浏览过
原创

快速排序(Quick Sort)是一种高效的排序算法,采用分治法策略。本文将展示如何在 C# 中使用递归方法实现该算法,通过选取基准值将数组分为两部分进行处理。

结果与目标

本示例旨在将一个无序的整型数组转换为升序排列。算法的核心在于每次迭代中确定一个基准元素(Pivot),将小于等于它的元素放在左侧,大于它的元素放在右侧,然后对左右子数组重复此过程。

准备条件

  1. 开发环境需支持 C# 语法规范。
  2. 理解基本的数组操作与递归概念。
  3. 确保已引用必要的命名空间以使用 List<T> 集合类型。

真实操作顺序

第 1 步:定义快速排序主函数

目的:设定递归终止条件并处理初始分区。

动作:创建一个静态方法,接收整型数组参数。首先检查数组长度,若小于等于 1 则直接返回(无需排序)。接着选取最后一个元素作为基准值索引,调用辅助函数获取小于等于和大于基准值的子数组,最后合并递归结果。

public static int[] QuickSort(int[] arr)
{
    if (arr.Length <= 1)
        return arr;

    // 选取最后一个元素作为基准
    int pivot = arr.Length - 1;
    
    // 获取小于等于基准的子数组
    int[] less = GetLessThanEqualToPivot(arr, pivot);
    // 获取大于基准的子数组
    int[] greater = GetGreaterThanPivot(arr, pivot);
    
    // 递归排序并拼接结果
    return Concatenate(QuickSort(less), arr[pivot], QuickSort(greater));
}

第 2 步:实现数据拼接辅助方法

目的:将左子数组、基准元素和右子数组合并为一个完整的有序数组。

动作:使用 List<int> 临时存储结果,依次添加左部分、中间基准值、右部分,最后转为数组返回。

public static int[] Concatenate(int[] less, int pivotElement, int[] greater)
{
    List<int> _result = new List<int>();
    _result.AddRange(less);
    _result.Add(pivotElement);
    _result.AddRange(greater);
    return _result.ToArray();
}

第 3 步:实现小于等于基准值的筛选逻辑

目的:从原数组中提取所有小于或等于基准值的元素(不包括基准值本身,因为它已被单独处理)。

动作:遍历数组直到倒数第二个元素,比较当前元素与基准值,符合条件的加入列表。

public static int[] GetLessThanEqualToPivot(int[] arr, int pivot)
{
    List<int> _result = new List<int>();
    for (int i = 0; i < arr.Length - 1; i++)
    {
        if (arr[i] <= arr[pivot])
        {
            _result.Add(arr[i]);
        }
    }
    return _result.ToArray();
}

第 4 步:实现大于基准值的筛选逻辑

目的:从原数组中提取所有严格大于基准值的元素。

动作:同样遍历排除基准值的位置,判断并收集较大值。

public static int[] GetGreaterThanPivot(int[] arr, int pivot)
{
    List<int> _result = new List<int>();
    for (int i = 0; i < arr.Length - 1; i++)
    {
        if (arr[i] > arr[pivot])
        {
            _result.Add(arr[i]);
        }
    }
    return _result.ToArray();
}

完成判断

当上述代码编译并通过单元测试验证后,输入任意长度的整数数组,输出的数组应呈现严格的升序排列状态。该方法虽然直观易懂,但在处理大规模数据时,由于频繁创建新数组和 List 对象,可能会带来一定的内存开销和性能损耗,生产环境中建议考虑原地排序(In-place)的实现方式。

简要总结

以上便是 C# 实现快速排序算法的详细教程,更多关于 C# 数据结构与算法优化的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。