归并排序
Posted 512178509
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了归并排序相关的知识,希望对你有一定的参考价值。
/** * 借助临时数组进行移动 */ @Test public void mergerSort(){ int[] arr={1,4,5,6,7,8,3,2,4,6,7,3,5,6,4,3,2}; int[] temp = new int[arr.length]; mergerSort(arr,0,arr.length-1,temp); System.out.println(Arrays.toString(arr)); } public void mergerSort(int[] arr,int left,int right,int[] temp){ if(left<right){ int mid=(right+left)/2; mergerSort(arr,left,mid,temp); mergerSort(arr,mid+1,right,temp); merger(arr,left,mid,right,temp); } } public void merger(int[] arr,int left,int mid,int right,int[] temp){ int i=left;//左序列 int j=mid+1;//右序列 int t=0;//临时序列 while (i<=mid && j<=right){ if(arr[i]<=arr[j]){ temp[t++]=arr[i++]; }else { temp[t++]=arr[j++]; } } while (i<=mid){ temp[t++]=arr[i++]; } while (j<=right){ temp[t++]=arr[j++]; } t=0; while (left<=right){ arr[left++]=temp[t++]; } }
归并排序算法实现
大致思路:
1、首先对数组进行切分,分成最小单元
2、然后进行数据合并,使用临时进行
比如 1 ,4,,5,6,7,8 分成独立的个体,之后组织 14 56 78 之后在 14和56合并排序,之后在和78排序
以上是关于归并排序的主要内容,如果未能解决你的问题,请参考以下文章