zoukankan      html  css  js  c++  java
  • 作业4 二分归并排序

    1.     问题

    给定n个不同的数构成的数组T[1..n],使用二分归并排序对数组进行排序,其中n=2^k

    2.     解析

    二分归并排序主要有两个大步骤

    1.将数组分为两部分,并分别进行二分归并排序

    2.将排序好的两部分进行归并。

    整个过程是一个递归的过程

    3.     设计

    MergeSort(T,left,right)

    {

           If(left == right)

                  Return

           Else

           {

                  Mid = left+right/2;

                  MergeSort(T,left,Mid);

                  MergeSort(T,Mid+1,right);

                  Merge(T,left,Mid,Mid+1,right);

           }

    }

    Merge(T,left1,right1,left2,right2)

    {

           Char* tmp;

           Int index = 0;

           Start = left1;

           Lenth = right-left-1;

           While(index<length)

           {

                  If(T[left1] < T[left2] || left2== right2)

                         Tmp[index++] = T[Left1++];

                  Elif(T[left2] < T[left1] || left1== right1)

                         Tmp[index++] = T[Left2++];

           }

           For(I;I < length;i++)

                  T[start+i] = Tmp[i]

    }

    4.     分析

     

     

     好像无法直接复制word中的分数,因此就用截图来代替了。

    对于算法的分析这一块还是比较重要的,在通过推断得出了结果后,还需要通过严谨的数学证明来确认。

    对于分治的算法,因为经常大的问题分成小的问题,因此经常可以写出递推方程。

    复杂度的计算方法应该也大同小异

    5.     源码

    https://github.com/fanchile/Algorithm

  • 相关阅读:
    VB获取对象成员
    VB一键扫雷
    VBS代码
    C# LINQ GroupBy
    C# 元组和值元组
    数据结构笔记
    DoTween使用
    Unity中常用的数据结构总结
    Unity 坐标系转换
    .Net中C# Dictionary 用法
  • 原文地址:https://www.cnblogs.com/Fanchile/p/12516635.html
Copyright © 2011-2022 走看看