算法-归并排序(分治)
2018-02-20 14:38
239 查看
package MOOC; public class GuiBing { static int[] a= {13,27,19,2,8,12,2,8,30,89}; static int[] b=new int[10]; public static void main(String[] args) { int size=a.length; MergeSort(a,0,size-1,b); //传递的是下标 for(int i=0;i<size;i++) System.out.print(a[i]+" "); } private static void MergeSort(int[] a, int s, int e, int[] temp) { if(s<e) { //归并区间大于1 int m=s+(e-s)/2; MergeSort(a, s, m, temp); //前一半归并排序,用temp做中转 MergeSort(a, m+1, e, temp); //后一半归并排序,用temp做中转 Merge(a,s,m,e,temp); //两半合并 } } private static void Merge(int[] a, int s, int m, int e, int[] temp) { int pb=0; int p1=s,p2=m+1; while(p1<=m&&p2<=e) { //两个数组合并到一个 if(a[p1]<a[p2]) temp[pb++]=a[p1++]; else temp[pb++]=a[p2++]; } while(p1<=m) temp[pb++]=a[p1++]; while(p2<=e) temp[pb++]=a[p2++]; for(int i=0;i<e-s+1;i++) a[s+i]=temp[i]; } }
相关文章推荐
- <菜鸟学算法-A排序(分治的思想:归并排序)>
- Python 数据结构与算法 —— 从分治的角度看快速排序、归并排序
- 算法学习之路:分治策略-归并排序-java实现
- 算法基础:分治模式,归并排序ΘΘΘΘΘΘ知识小结
- 【算法导论】分治法及归并排序
- 分治思想的几个算法:二分检索、快排、归并排序
- 算法学习笔记(五)------归并排序(分治)
- 【算法导论】2-2 二路归并排序(分治)merge-sort 和逆序对的问题
- 【算法学习】归并排序——基于分治思想
- 第十六周项目1--验证算法--(7)归并排序
- 算法设计与分析之分治思想
- 算法思想之分治递归策略
- 算法基础:排序之归并排序
- 算法第三次作业(1. 排序。对文件 largeW.txt(下载链接)中的数据,编程实现冒泡排序(方法名:bubbleSort) 与 归并排序(mergeSort),把排序后的结果分别保存到largeW
- 算法踩坑5-归并排序
- 算法与数据结构学习 08 归并排序
- 【算法复习二】传统基本算法(分治----残缺棋盘问题)
- 算法导论学习之归并排序
- 经典算法4:分治法求解快速排序
- 基本排序算法(3)——关于分治法及归并排序