归并排序

来源:互联网 发布:西门子840d编程指令 编辑:程序博客网 时间:2024/05/17 10:05
/** * 归并排序,本质是分治算法,对每个数组分为左右两个数组,然后在合并的时候进行排序 * @author biakia * */public class MergeSort {private static int[] mergeSort(int[] array,int left,int right){int[] result=new int[right-left+1];if(left==right){result[0]=array[left];return result;}if(left<right){ //至少有两个元素int i=(left+right)/2; //取中点int mid=i+1;int k=0;int s=0;int t=0;int[] l=mergeSort(array,left,i);int[] r=mergeSort(array,i+1,right);while((left<=i)&&(mid<=right)){if(l[t]<r[s]){result[k++]=l[t++];left++;}else{result[k++]=r[s++];mid++;}}while(left<=i){result[k++]=l[t++];left++;}while(mid<=right){result[k++]=r[s++];mid++;}}printArray(result);return result;}private static void printArray(int[] a){System.out.println();for(int i=0;i<a.length;i++){System.out.print(" "+a[i]);}}public static void main(String[] args) {int[] a={2,1,4,3,6,5,7,8,9,15,6,8,23};printArray(mergeSort(a, 0, a.length-1));}}

运算过程如下:



0 0
原创粉丝点击