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

    1.问题

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

    2.解析

    3.设计

     1 //归并
     2 void Merge(int left, int mid, int right) {
     3     int i = left, j = mid + 1;
     4     int k = left;
     5 
     6     //在A(left,mid)和A(mid+1,right)两部分中取较小数加到B数组中,下标+1
     7     while (i <= mid && j <= right) {
     8         if (A[i] <= A[j]) B[k++] = A[i++];
     9         else B[k++] = A[j++];
    10     }
    11     //若A(left,mid)中还有元素剩余,则依次加到B数组中,下标+1
    12     while (i <= mid) 
    13         B <-  A;
    14     
    15     //若A(mid+1,right)中还有元素剩余,则依次加到B数组中,下标+1
    16     while (j <= right) 
    17         B <- A;
    18     
    19     //B数组整体赋值给A数组
    20     for (int x = left; x <= right; x++)
    21         A <- B;
    22 }
    23 
    24 
    25 //二分
    26 void Binary(int left,int right) {
    27     int mid = (left + right) / 2;    //mid取left、right中
    28     if (left < right) {
    29         Binary(left, mid);        //左半部分一直递归
    30         Binary(mid + 1, right);    //右半部分一直递归
    31         Merge(left,mid,right);    //归并左右部分
    32     }
    33 }

    4.分析

     T(n)=O(nlogn)

     5.源码

    https://github.com/2579081436/algorithm.github.io

  • 相关阅读:
    MyEclipse 2016CI破解版for Mac
    关于Mac系统中my sql 和navicat for mysql 的连接问题。
    二分总结
    递推总结
    区间DP学习笔记 6/20
    搜索考试
    模板整理
    防线 2020/3/31
    JS 循环遍历JSON数据
    pm am 12小时格式化
  • 原文地址:https://www.cnblogs.com/-happy-/p/14594192.html
Copyright © 2011-2022 走看看