归并排序 java实现
来源:互联网 发布:ubuntu配置keras环境 编辑:程序博客网 时间:2024/05/17 08:09
2.//归并排序采用的是分治算法:分治算法的基本思想是将一个规模为N的问题分解为K个规模//较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原//问题的解。 //分治法解题的一般步骤: //(1)分解,将要解决的问题划分成若干规模较小的同类问题; //(2)求解,当子问题划分得足够小时,用较简单的方法解决; //(3)合并,按原问题的要求,将子问题的解逐层合并构成原问题的解//将一个含有n个序列的有序表看成是n个长度为1的有序表,然后两两归并,得到[n/2]个长//度为2的有序表,然后再两两归并,直到得到一个长度为n的有序表为止,归并排序的时间复//杂度为O(nlgn)//归并排序需要使用递归进行实现import java.util.Arrays;public class MegerSort {public static void main(String args[]){int[]a=new int[]{9,1,5,7,2,4,3,8,0,6};MegerSort mg=new MegerSort();mg.merger(a,0,a.length-1); System.out.println(Arrays.toString(a)); }private int[] merger(int[]b,int low,int high){int mid=(low+high)/2;if(low<high){this.merger(b, low, mid);this.merger(b, mid+1, high);this.sort(b,low,mid,high);}return b;}private void sort(int[]c,int low,int mid,int high){int[]d=new int[high-low+1];int index=0;int i=low,j=mid+1;while(i<=mid&&j<=high){if(c[i]<=c[j]){d[index++]=c[i++];}else{d[index++]=c[j++];}}while(j<=high){d[index++]=c[j++];}while(i<=mid){d[index++]=c[i++];}for(int m=0;m<d.length;m++){c[low+m]=d[m];}}}
0 0
- 归并排序Java实现
- Java实现归并排序
- Java实现归并排序
- 归并排序Java实现
- 归并排序JAVA实现
- java实现归并排序
- 归并排序(java实现)
- 归并排序java实现
- Java实现归并排序
- 归并排序 java实现
- 归并排序Java实现
- 归并排序java实现
- Java实现归并排序
- Java实现归并排序
- Java实现归并排序
- JAVA实现归并排序
- java实现归并排序
- 归并排序 Java实现
- NYOJ-A/B Problem
- A. Appleman and Easy Task( brute force implementation)
- C++类型转换方式总结
- 最小化到托盘并有图标闪烁效果
- Object-C 声明属性为什么用下划线,代码规范和编程风格
- 归并排序 java实现
- (转)在团队中进行单元测试/TDD的12条经验
- poj-3071
- C语言基础
- loadrunner 发送中文参数
- 修改Eclipse格式化代默认长度
- 1.Attach(E-UTRAN Initial)
- TCP/IP常见协议及实现
- 数据库分库分表