MR算法扩展
MergeSort归并排序
合并
合并细节
-
不断地将当前序列平均分割成2个子序列, 直到不能再分割(序列中只剩 1个元素)。
-
不断地将2个子序列合并成一个有序序列,直到最终只剩下1个子序列。
示例代码
- 编写Sort类
1 | package com.lagou; |
- 编写MergeSort类
1 | package com.lagou; |
- 编写SortTest类
1 | package com.lagou; |
-
编译结果
-
结果分析
1 | sort(0, 2); merge(0, 1, 2); 1 14 7 2 |
QuickSort快速排序
-
从数组中选择一个轴点元素(Pivot element),一般选择0位置元素为轴点元素。
-
利用Pivot将数组分割成2个子序列,将小于Pivot的元素放在Pivot前面(左侧),将大于 Pivot的元素放在Pivot后面(右侧),等于Pivot的元素放哪边都可以(暂定放在左边)
-
对子数组进行第一步,第二步操作,直到不能再分割(子数组中只有一个元素)。
示例代码
- 编写QuickSort类
1 | package com.lagou; |
- 编写SortTest类,添加以下Test方法
1 | @Test |
-
编译结果
-
结果分析
1 | pivotIndex(0, 4)=0 1 1 14 7 2 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WeiJia_Rao!