1.归并排序(Merge Sort)算法完全依照了分治模式

-分解:将n个元素分成n/2个元素的子序列

-解决:将两个子序列递归的排序

-合并:合并两个已经排好序的子序列以得到排序的结果

2.和快排不同的是

-归并的分解较为随意

-重点是合并

package 分治法;import java.util.Arrays;public class 归并排序 {public static void main(String[] args) {int []arr=new int[]{5,3,2,4,6,7,10};System.out.println(Arrays.toString(arr));mergeSort(arr,0,arr.length-1);System.out.println(Arrays.toString(arr));}private static void mergeSort(int[] A, int p, int r) {if(p<r){int mid=p+((r-p)>>1);mergeSort(A,p,mid);mergeSort(A,mid+1,r);merge(A,p,mid,r);}}private static void merge(int[] A, int p, int mid, int r) {int[] helper=new int[A.length];//先把A中的数据拷贝到helper中System.arraycopy(A,p,helper,p,r-p+1);int left=p;//左侧队伍的头部指针指向待比较的元素int right=mid+1;//右侧队伍的头部指针指向待比较的元素int current=p;//原数组的指针,指向待填入数据的位置while(left<=mid&&right<=r){if(helper[left]<=helper[right]){A[current]=helper[left];current++;left++;}else{A[current]=helper[right];current++;right++;}}while(left<=mid){A[current]=helper[left];current++;left++;}}
}

分治法--归并排序算法相关推荐

  1. 算法--分治法归并排序 python

    设计算法 我们可以选择使用的算法设计方法有很多,插入排序使用了增量方法:在排序子数组A[1-j-1]后,将单个元素A[ j ]插入子数组的适当位置,产生排序好的子数组A[1-j]. 而这次我们将考查另 ...

  2. 【学习记录】合并排序(归并排序)-分治法-计算机算法

    讲解过程-合并算法讲解 产生随机数表的代码 #include<iostream> #include<fstream> #include<stdlib.h> #inc ...

  3. 分治法 Strassen算法计算方阵相乘

    1 . divided: 假设 A ,B 是nxn的方阵,将其简单的划分成这种四个小矩阵的形式,A包含abcd四个小矩阵,B包含efgh四个矩阵. 2.令 p1 = a (f- h)  , p2 = ...

  4. 从合并排序算法看“分治法”

    本文内容 分治策略 分治步骤 从合并排序看"分治策略" 分治策略 分治法(divide-and-conquer),"分治法策略"是一种很重要的算法.顾名思义,& ...

  5. 算法设计与分析 实验二 分治法求解最近点对问题

    分治法求解最近点对问题 一.实验目的与要求 1.实验基本要求 2.实验亮点 二.实验内容与方法 三.实验步骤与过程 (一)一些准备工作 1.实验流程 2.数据生成与去除重复点 (二)暴力穷举法 1.算 ...

  6. 三大算法之一:分治法(带你用分治法思想优化程序,计算降低复杂算法的时间复杂度)

    目录 ​ 零.前言 1.分治法 1.含义 2.分治法主要思想 3.分治法的求解步骤 1.确定初始条件 2.计算每一部分的时间复杂度 3.合并时间复杂度 4.求解 3.最大最小值问题 1.问题描述 2. ...

  7. 算法设计与分析之分治法

    文章目录 前言 一.分治法设计思想 二.分治法与递归 三.分治法的适用条件 四.时间复杂度分析 五.分治法设计步骤 六.分治法示例 总结 前言 大家好,我是一只勤勤恳恳的程序猿.本篇文章小猿将跟您分享 ...

  8. 深大算法设计与分析实验二——分治法求最近点对问题

    源代码: 深大算法设计与分析实验二--分治法求最近点对问题代码-C/C++文档类资源-CSDN下载 目录 实验问题 一.实验目的: 二.内容: 三.算法思想提示 产生不重复的随机点算法: 蛮力算法: ...

  9. 算法设计练习题(1)——分治法

    1. 给定一个数组A,任务是设计一个算法求得数组中的"主元素",即在数组中个数超过数组总元素个数一半的元素.但是数组中元素的数据类型可能是复杂类型,这意味着数组中的元素进能够比较是 ...

最新文章

  1. python grpc_python中grpc的使用示例
  2. ASP.NET AJAX 宝典系列(2) 在Visual Studio 2005 Web Application 项目中使用AJAX
  3. 详解get与post请求方式、content-type与responseType、@Requestbody与@Requestparam的使用场景
  4. 虚拟化服务器监控,监控服务器虚拟化软件
  5. set-cookie 和 cookie 的区别_Go Web 编程如何确保Cookie数据的安全传输
  6. matplotlib 子图超过4个_Matplotlib从入门到精通
  7. jquery ui仿腾讯web qq界面desktop酷炫特效
  8. 学了前端可以做什么?前端开发有哪些应用场景??
  9. PHP正则表达式的运用
  10. Django最新版(1.10.5)在SAE上面部署流程
  11. keytool错误: java.lang.RuntimeException: 用法错误,and 不是合法的命令【转】
  12. 支付宝异步回调验证签名的那些走过的坑
  13. 大学生网页制作期末作业——HTML+CSS+JavaScript制作成都旅游网页设计与实现12个页面 web前端课程设计代码 web课程设计 HTML网页制作代码
  14. 怎么引入oracle驱动包,Maven引入oracle驱动包
  15. httpclient3 自动登陆淘宝, 开心网
  16. 聚焦Java性能优化 打造亿级流量秒杀系统【学习笔记】01_电商秒杀商品回顾
  17. QUAKE 3源代码评测:架构
  18. Pyecharts概览
  19. [字符串题-java实现]LeetCode551. 学生出勤记录 I
  20. 如何使用 LK 字幕脚本工具

热门文章

  1. 外企出口的免抵退税(一般贸易计算方法)
  2. [笔记] 数值分析的一些
  3. Nginx深入详解之upstream分配方式
  4. 企业邮件安全防护经验总结
  5. 华为nova7 pro防水吗
  6. 知道计算机名如何添加打印机,您知道笔记本电脑如何连接到打印机吗?
  7. 微信群发红包原理 计算机,微信红包群发中隐藏着一个很多人不知道的小秘密...
  8. 2022年全球市场EMC消音室总体规模、主要企业、主要地区、产品和应用细分研究报告
  9. position(定位)
  10. 上班族饮食十大“夺命”恶习