当前位置: 首页 > wzjs >正文

柳州网站制作推荐网站服务器怎么搭建

柳州网站制作推荐,网站服务器怎么搭建,wordpress代码按钮,word文档做网站归并排序主要是两大模块 分治 和 合并 即将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并 由于使用了新的数组 那么空间复杂度就为O(n) 但这…

归并排序主要是两大模块 分治 和 合并  

即将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并 由于使用了新的数组 那么空间复杂度就为O(n) 但这一排序会相同数据的位置保持不变即 保持数组的稳定性 

以[8, 4, 5, 7, 1, 3, 6, 2]为例

执行的顺序为

mergeSort(A, 0, 7)  // 处理整个数组

├── mergeSort(A, 0, 3)  // 处理左半部分

│   ├── mergeSort(A, 0, 1)  // 处理 [8, 4]

│   │   ├── mergeSort(A, 0, 0)  // 处理 [8](终止)

│   │   ├── mergeSort(A, 1, 1)  // 处理 [4](终止)

│   │   ├──  merge(A, 0, 1, temp)  // 合并 [8] 和 [4]

│   ├── mergeSort(A, 2, 3)  // 处理 [5, 7]

│   │   ├── mergeSort(A, 2, 2)  // 处理 [5](终止)

│   │   ├── mergeSort(A, 3, 3)  // 处理 [7](终止)

│   │   ├──  merge(A, 2, 3, temp)  // 合并 [5] 和 [7]

│   ├──  merge(A, 0, 3, temp)  // 合并 [4, 8] 和 [5, 7]

├── mergeSort(A, 4, 7)  // 处理右半部分

│   ├── mergeSort(A, 4, 5)  // 处理 [1, 3]

│   │   ├── mergeSort(A, 4, 4)  // 处理 [1](终止)

│   │   ├── mergeSort(A, 5, 5)  // 处理 [3](终止)

│   │   ├── merge(A, 4, 5, temp)  // 合并 [1] 和 [3]

│   ├── mergeSort(A, 6, 7)  // 处理 [6, 2]

│   │   ├── mergeSort(A, 6, 6)  // 处理 [6](终止)

│   │   ├── mergeSort(A, 7, 7)  // 处理 [2](终止)

│   │   ├── merge(A, 6, 7, temp)  // 合并 [6] 和 [2]

│   ├──  merge(A, 4, 7, temp)  // 合并 [1, 3] 和 [2, 6]

├──  merge(A, 0, 7, temp)  // 合并 [4, 5, 7, 8] 和 [1, 2, 3, 6]

关键点在于

 mergeSort() 先递归拆分,直到 start == end(单个元素),然后回溯时合并

merge() 只在两个子数组都已经排序后才会执行

merge() 总是在 mergeSort() 递归调用之后执行,保证子数组是有序的再进行合并

类似于二叉树的后续遍历 即左右根

          [8, 4, 5, 7, 1, 3, 6, 2]

          /                       \

  [8, 4, 5, 7]                   [1, 3, 6, 2]

     /         \                   /         \

  [8, 4]     [5, 7]             [1, 3]     [6, 2]

   /    \     /    \            /    \      /    \

 [8]    [4] [5]    [7]        [1]    [3]  [6]    [2]

下面为实现的代码

public class Solution {

    public void sortIntegers2(int[] A) {

       if(A==null||A.length<=0)

       {

           return;

       }

       int[] temp=new int[A.length];

       mergeSort(A,0,A.length-1,temp);

    }

    void mergeSort(int[] A,int start,int end,int[] temp)

    {

        if(start>=end)

        {

            return;

        }

        int mid=(start+end)/2;

        //递归将其分治 将所有的数字最终分解为一个元素

        mergeSort(A,start,mid,temp);

        mergeSort(A,mid+1,end,temp);

      //递归完成后进行合并已排好序的数组 

        merge(A,start,end,temp);

    }

    void merge(int[] A,int start,int end,int[] temp)

    {

        int middle = (start + end) / 2;

        int leftIndex=start;

        int rightIndex=middle+1;

        int Index=start;

        //比较两个左右子数列 按照从小打大的顺序进行排序

        while(leftIndex<=middle&&rightIndex<=end)

        {

            if(A[leftIndex]<=A[rightIndex])

            {

                temp[Index++]=A[leftIndex++];

            }else

            {

                temp[Index++]=A[rightIndex++];

            }

        }

        //将余下的左子序列赋值至剩余的temp数组中

        while(leftIndex<=middle)

        {

        temp[Index++]=A[leftIndex++];

        }

        //将余下的右子序列赋值至剩余的temp数组中

        while(rightIndex<=end)

        {

        temp[Index++]=A[rightIndex++];

        }

        for(int i=start;i<=end;i++)

        {

            A[i]=temp[i];

        }

    }

    }

http://www.dtcms.com/wzjs/49616.html

相关文章:

  • wordpress文章无法使用进一步优化营商环境
  • 专门网站建设域名信息查询系统
  • asp net做网站视频宝鸡网站seo
  • 作文网站排行榜前十名seo站点
  • 武汉微信网站建设昆山网站制作哪家好
  • 怎么做审核网站百度网络科技有限公司
  • 现在还有企业做网站吗做推广的技巧
  • 天元建设集团有限公司党群工作部app优化排名
  • 阿克苏网站建设百度网首页登录入口
  • 网站技术规划重庆店铺整站优化
  • 做网站公司-汉狮网络灰色关键词排名代做
  • 南昌微信网站建设seo优化专员招聘
  • 网站smtp服务器惠州seo外包平台
  • 深圳网站建设就q479185700顶上seo站外优化平台
  • 自己做网站新手入门整站优化价格
  • 做兼职上什么网站找东莞网站公司排名
  • 企业文化建设内容主要包括seo助力网站转化率提升
  • 在哪可以做网站怎么自己做一个网页
  • 温州市城市建设档案馆网站优化设计电子版
  • 中文网站建设和英文网站建设的区别今日国内新闻大事20条
  • 建设交通职业技术学院招聘信息网站搜索引擎收录提交入口
  • dw 如何做自适应网站搭建网站要多少钱
  • 日本图形设计网站技能培训
  • 国外设计网站导航搜索引擎优化的内容有哪些
  • 网页制作主题seo白帽优化
  • 深圳网站公司建设方案企业中层管理人员培训课程
  • 网站可以用ai做吗网站推广和网络推广
  • 政府网站的构建与运作企业网络策划
  • 怎么建电子商务网站沪深300指数是什么意思
  • 好的网站建设商家沈阳关键词优化价格