排序——归并排序

思路:采用分治思想

递归

public static void mergesort(int[] array,int first,int end,string order)
        {
            if (first < end)
            {
                int midindex = (first + end) / 2;
                Console.WriteLine($"first:{first},end:{end},order:{order}");
                mergesort(array, first, midindex,"pre");
                mergesort(array, midindex + 1, end,"old");
                MergeMethod(array,first,midindex,end);
            }
            else
            {
                Console.WriteLine($"first==end,{order}");
            }
        }

排序方法

 public static void MergeMethod(int[] array,int first,int midindex,int end)
        {
            Console.WriteLine($"method:first:{first},end:{end}");
            Console.WriteLine();

				int[] temp = new int[end - first + 1];
15             int m = first;
16             int n = midIndex + 1;
17             int k = 0;
18             while (m <= midIndex && n < end)
19             {
20                 if (inputAray[m] < inputAray[n])
21                 {
22                     temp[k] = inputAray[m];
23                     k++;
24                     m++;
25                 }
26                 else
27                 {
28                     temp[k] = inputAray[n];
29                     k++;
30                     n++;
31                 }
32             }
33             while (m <= midIndex)
34             {
35                 temp[k] = inputAray[m];
36                 k++;
37                 m++;
38             }
39             while (n < end)
40             {
41                 temp[k] = inputAray[n];
42                 k++;
43                 n++;
44             }
45             for (k=0,m = first; m < end; k++,m++)
46             {
47                 inputAray[m] = temp[k];
48             }

        }

调用

  public static void Main(string[] args)
        {
            int[] a ={ 11, 8, 3, 9, 7, 1, 2, 5 };
            mergesort(a, 0, 7,"开始");
            Console.ReadLine();
        }

递归过程图解
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值