题目

对无序数组进行归并排序,使其有序

解析

准备一个无序数组,

将这个数组平均分成两部分,再把每一部分在平均分成两部分,以此类推,直到分成只剩一个数为止

在将每一部分排序后依次返回

代码

public static void process(int[] arr, int L, int R) {if (L == R) { return;}int mid = L + ((R - L) >> 1);process(arr, L, mid);process(arr, mid + 1, R);merge(arr, L, mid, R);
}
public static void merge(int[] arr, int L, int M, int R) {int[] help = new int[R - L + 1];int i = 0;int p1 = L;int p2 = M + 1;while (p1 <= M && p2 <= R) {help[i++] = arr[p1] <= arr[p2] ? arr[p1++] : arr[p2++];}while (p1 <= M) {help[i++] = arr[p1++];}while (p2 <= R) {help[i++] = arr[p2++];}for (i = 0; i < help.length; i++) {arr[L + i] = help[i];}
}

有苦有乐的算法 --- 归并排序相关推荐

  1. 有苦有乐的算法 --- 有序数组中的元素存在问题、最左元素问题和无序数组局部最小问题

    一个有序数组,判断是否含有一个元素 解析: 给定一个数组 如果需要判断是否存在的元素为3. 首先找到数组的中间元素: 如果此元素为3,结束: 如果不是,此元素与3比较,此元素如果大于3,在从此元素左边 ...

  2. 有苦有乐的算法 --- 一个数组中,有两种数出现了奇数次,其余数都出现了偶数次,找到这两种数

    题目 一个数组中,有两种数出现了奇数次,其余数都出现了偶数次,找到这两组数 例: [2,4,3,2,5,4] ⇒ [3,5] [1,4,6,3,7,8,3,2,1,2,6,6,7,8] ⇒ [6,4] ...

  3. 有苦有乐的算法 --- 可能有环也可能无环的两个单链表,判断这两个链表是否相交,如果相交返回相交的第一个节点

    题目 可能有环也可能无环的两个单链表,判断这两个链表是否相交,如果相交返回相交的第一个节点. 解析 第一步,判断链表是有环链表还是无环链表: 如果一个单链表无环,它一定有一个指向null的尾结点: 如 ...

  4. 有苦有乐的算法 --- 获取二叉树的最大宽度

    题目 一颗二叉树,求其最大宽度. 例: 解析 按层遍历二叉树: 在遍历时,使用用4个变量来记录信息: Node curEnd = null; // 当前层,最右节点是谁 Node nextEnd = ...

  5. 有苦有乐的算法 --- 基数排序

    题目 一个无序数组,使用基数排序的方式从小到大进行排序 解析 给定一个数组: 首先准备一个"桶"(每个桶是一个队列): 从左到右遍历数组,每个元素的个位数是多少,就进入几号桶中: ...

  6. 有苦有乐的算法 --- 随机快排

    题目 使用随机快排对给定数组进行从小到大排序 [5,3,2,1,5] ⇒ [1,2,3,5,5] 解析 给定一个数组 1.在数组中找出一个数作为基准(最右侧的数2):变量l记录数组头位置,变量r记录尾 ...

  7. 有苦有乐的算法 --- 小和问题

    题目 一个无序数组,获取每个元素在左面比这个元素小的个数,求这些个数的和 例: [3,2,5,1,4] ==> 6 [4,7,0,8,2,4,9,4] ==> 14 解析 准备一个无序数组 ...

  8. 有苦有乐的算法 --- 计数排序

    题目 一个数组,其数据范围在0~200之间,将其从小到大排序 解析 给定一个数组: 首先获取去最大值,然后创建一个长度为这个最大值+1的临时数组: 遍历原数组,如果原数组中的元素是n,在临时数组索引为 ...

  9. 有苦有乐的算法 --- 图的深度优先遍历

    题目 给定一个图,使用栈对其进行深度优先遍历 代码 public static void dfs(Node node) {if (node == null) {return;}Stack<Nod ...

最新文章

  1. jQuery-拖动层(在可视区域范围内)
  2. HTML5-WebSocket实现聊天室
  3. 工作五年,后面四年重复着第一年的活儿?
  4. 2021春季每日一题【week5 未完结】
  5. 解决pl/sql devloper 中数据库操作语句中文乱码的问题
  6. 张小娴的文章,喜欢的,贴来存档
  7. [转]javascript小技巧,超强推荐
  8. Error - Found cycle in the ListNode
  9. 变电站计算机在线监控系统,变电站环境在线监测系统
  10. 呼伦贝尔学院计算机宿舍,2020年呼伦贝尔学院新生宿舍环境条件,大一新生男生女生宿舍内部图片【多图】...
  11. 解决Windows下运行出现ModuleNotFoundError: No module named xxx问题
  12. 对自己的python项目配置PYTHONPATH
  13. 专利申请书的书写和cpc客户端的使用
  14. 一行代码查看电脑Wifi密码
  15. 80c51单片机编程语言是什么,80C51单片机的指令系统(一)程序设计语言和指令...
  16. 5月9日机构对金融市场观点汇总
  17. Elasticsearch-head-master配置 (与es连接)
  18. 【热血传奇】 怪物添加(上)
  19. 滴滴社招三面(已拿offer)
  20. MWCS2019:中国联通与TCL通讯5G终端创新联合研发中心正式揭牌

热门文章

  1. 基于CentOS7.6系统搭建远程GIT服务器
  2. Android 流式布局FlowLayout
  3. C# vs Java:北乔峰 vs 南慕容
  4. CMake下载地址及语法介绍
  5. 【小嘟陪你刷题04】Java实现水花仙数、九九乘法表、金字塔
  6. C语言——一分钟了解数据类型与变量
  7. 使用dockerfile将应用镜像化,及error context checking错误解决方法。
  8. Maven 的 Lifecycle 和 plugins
  9. 1069. The Black Hole of Numbers (20)
  10. centos 7.6 ——NFS共享存储服务