归并排序

static void Main(string[] args)
{
    int[] randomArray = { 2, 1, 8, 7, 9, 12, 0, 3 };
    MergeSort(randomArray, 0, randomArray.Length - 1);
    for (int i = 0; i < randomArray.Length; ++i)
        Console.WriteLine(randomArray[i]);
}

public static void MergeSort(int[] A, int p, int r)
{
    if(p < r)
    {
        int q = (p + r) / 2;
        MergeSort(A, p, q);
        MergeSort(A, q + 1, r);
        Merge(A, p, q, r);
    }
}

public static void Merge(int[] A, int p, int q, int r)
{
    int n1 = q - p + 1;
    int n2 = r - q;
    int[] Left = new int[n1 + 1];
    int[] Right = new int[n2 + 1];
    for(int i1 = 0; i1 < n1; ++i1)
    {
        Left[i1] = A[p + i1];
    }
    for(int j1 = 0; j1 < n2; ++j1)
    {
        Right[j1] = A[q + j1 + 1];
    }
    Left[n1] = int.MaxValue;
    Right[n2] = int.MaxValue;
    int i = 0;
    int j = 0;
    for(int k = p; k <= r; ++k)
    {
        if(Left[i] <= Right[j])
        {
            A[k] = Left[i];
            ++i;
        }
        else
        {
            A[k] = Right[j];
            ++j;
        }
    }
}

posted on   中道学友  阅读(174)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律

导航

< 2009年9月 >
30 31 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 1 2 3
4 5 6 7 8 9 10

技术追求准确,态度积极向上

点击右上角即可分享
微信分享提示