有苦有乐的算法 --- 归并排序
题目
对无序数组进行归并排序,使其有序
解析
准备一个无序数组,
将这个数组平均分成两部分,再把每一部分在平均分成两部分,以此类推,直到分成只剩一个数为止
在将每一部分排序后依次返回
代码
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];}
}
有苦有乐的算法 --- 归并排序相关推荐
- 有苦有乐的算法 --- 有序数组中的元素存在问题、最左元素问题和无序数组局部最小问题
一个有序数组,判断是否含有一个元素 解析: 给定一个数组 如果需要判断是否存在的元素为3. 首先找到数组的中间元素: 如果此元素为3,结束: 如果不是,此元素与3比较,此元素如果大于3,在从此元素左边 ...
- 有苦有乐的算法 --- 一个数组中,有两种数出现了奇数次,其余数都出现了偶数次,找到这两种数
题目 一个数组中,有两种数出现了奇数次,其余数都出现了偶数次,找到这两组数 例: [2,4,3,2,5,4] ⇒ [3,5] [1,4,6,3,7,8,3,2,1,2,6,6,7,8] ⇒ [6,4] ...
- 有苦有乐的算法 --- 可能有环也可能无环的两个单链表,判断这两个链表是否相交,如果相交返回相交的第一个节点
题目 可能有环也可能无环的两个单链表,判断这两个链表是否相交,如果相交返回相交的第一个节点. 解析 第一步,判断链表是有环链表还是无环链表: 如果一个单链表无环,它一定有一个指向null的尾结点: 如 ...
- 有苦有乐的算法 --- 获取二叉树的最大宽度
题目 一颗二叉树,求其最大宽度. 例: 解析 按层遍历二叉树: 在遍历时,使用用4个变量来记录信息: Node curEnd = null; // 当前层,最右节点是谁 Node nextEnd = ...
- 有苦有乐的算法 --- 基数排序
题目 一个无序数组,使用基数排序的方式从小到大进行排序 解析 给定一个数组: 首先准备一个"桶"(每个桶是一个队列): 从左到右遍历数组,每个元素的个位数是多少,就进入几号桶中: ...
- 有苦有乐的算法 --- 随机快排
题目 使用随机快排对给定数组进行从小到大排序 [5,3,2,1,5] ⇒ [1,2,3,5,5] 解析 给定一个数组 1.在数组中找出一个数作为基准(最右侧的数2):变量l记录数组头位置,变量r记录尾 ...
- 有苦有乐的算法 --- 小和问题
题目 一个无序数组,获取每个元素在左面比这个元素小的个数,求这些个数的和 例: [3,2,5,1,4] ==> 6 [4,7,0,8,2,4,9,4] ==> 14 解析 准备一个无序数组 ...
- 有苦有乐的算法 --- 计数排序
题目 一个数组,其数据范围在0~200之间,将其从小到大排序 解析 给定一个数组: 首先获取去最大值,然后创建一个长度为这个最大值+1的临时数组: 遍历原数组,如果原数组中的元素是n,在临时数组索引为 ...
- 有苦有乐的算法 --- 图的深度优先遍历
题目 给定一个图,使用栈对其进行深度优先遍历 代码 public static void dfs(Node node) {if (node == null) {return;}Stack<Nod ...
最新文章
- jQuery-拖动层(在可视区域范围内)
- HTML5-WebSocket实现聊天室
- 工作五年,后面四年重复着第一年的活儿?
- 2021春季每日一题【week5 未完结】
- 解决pl/sql devloper 中数据库操作语句中文乱码的问题
- 张小娴的文章,喜欢的,贴来存档
- [转]javascript小技巧,超强推荐
- Error - Found cycle in the ListNode
- 变电站计算机在线监控系统,变电站环境在线监测系统
- 呼伦贝尔学院计算机宿舍,2020年呼伦贝尔学院新生宿舍环境条件,大一新生男生女生宿舍内部图片【多图】...
- 解决Windows下运行出现ModuleNotFoundError: No module named xxx问题
- 对自己的python项目配置PYTHONPATH
- 专利申请书的书写和cpc客户端的使用
- 一行代码查看电脑Wifi密码
- 80c51单片机编程语言是什么,80C51单片机的指令系统(一)程序设计语言和指令...
- 5月9日机构对金融市场观点汇总
- Elasticsearch-head-master配置 (与es连接)
- 【热血传奇】 怪物添加(上)
- 滴滴社招三面(已拿offer)
- MWCS2019:中国联通与TCL通讯5G终端创新联合研发中心正式揭牌
热门文章
- 基于CentOS7.6系统搭建远程GIT服务器
- Android 流式布局FlowLayout
- C# vs Java:北乔峰 vs 南慕容
- CMake下载地址及语法介绍
- 【小嘟陪你刷题04】Java实现水花仙数、九九乘法表、金字塔
- C语言——一分钟了解数据类型与变量
- 使用dockerfile将应用镜像化,及error context checking错误解决方法。
- Maven 的 Lifecycle 和 plugins
- 1069. The Black Hole of Numbers (20)
- centos 7.6 ——NFS共享存储服务