归并排序(java)
来源:互联网 发布:消原唱软件 编辑:程序博客网 时间:2024/04/29 17:20
基本排序:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。
public class MergingSort {public int[] mergingSort(int[] data,int left,int right){if(left < right){int center = (left+right)/2;mergingSort(data,left,center);mergingSort(data,center+1,right);mergeArray(data,left,center,right);}return data; }//将数组中left--center,center+1--right的数组的值进行合并public void mergeArray(int[] data,int left,int center,int right){//设定一个数组用于排序int[] tempArray = new int[data.length];//设定一个值来保存左节点,用于标记、新的数组int sLeft = left;int temLeft = left;int mid = center + 1;while(left<=center&&mid<=right){if(data[temLeft]<data[mid]){tempArray[sLeft++] = data[temLeft++];}else{tempArray[sLeft++] = data[mid++];}}//将剩下的右边的数据复制到数组中while(temLeft<=center){tempArray[sLeft++] = data[temLeft++]; }//将剩下的左边的数据复制到数组中while(mid<=right){tempArray[sLeft++] = data[mid++];}//将临时数组中的数据,复制回原数据while(left<=right){data[left]=tempArray[left++];}}public static void main(String args[]){int[] a = {10,9,8,7,6,5,4,3,2,1};int[] result = new MergingSort().mergingSort(a, 0, a.length-1);for(int i=0;i<result.length;i++){System.out.println(result[i]);}}}
- 归并排序(java)
- (Java)归并排序
- 归并排序(java)
- 归并排序(Java)
- 归并排序(JAVA)
- 归并排序(Java) @排序
- 温故而知新-归并排序(JAVA)
- 归并排序(java实现)
- 归并排序(JAVA版)
- 归并排序(java实现)
- Java 归并排序(MergeSort)
- 归并排序(Java描述)
- java 归并排序(稳定)
- 归并排序(Java实现)
- 归并排序实现(Java)
- 归并排序--java(递归)
- 归并排序(java实现)
- Java 归并排序(MergeSort)
- 15本经典C、C++、MFC、VC++教程与开发资料
- 用“XML解析开发包Jaxp”对XML进行Dom方式解析-readXml操作
- Objective-C深复制和<NSCopying>协议
- linux下jdk1.6的安装和配置(转载)
- ubuntu/Mac系统智能卡操作全攻略1--访问PC/SC读卡器
- 归并排序(java)
- android mediaplayer 播放流媒体 m3u8
- 播放警告声音(例如 电量低等等)
- Android 4.1官方文档chm格式
- 字符集与编码方式解惑
- 一点小总结
- Tomcat 6.0 安装版内存调整
- 我原来如此
- OpenSessionInViewFilter的时候遇到的问题