标签:sort arr java -- mid int print 2.0 left
归并排序算法2.0( Merge sort)
算法 | 最好 | 最坏 | 平均 | 空间 | 稳定性 | |
---|---|---|---|---|---|---|
递归 | nlog2n | nlog2n | nlog2n | n | 稳定 |
import java.util.Arrays;
public class Marge {
//递归算法Recursion algorithm
public static void main(String[] args) {
int[] arr={1,4,7,8,3,6,9};
//{5,9,11,12,17,21,31,3,4,6,9,10};
System.out.print("原序列输出:");
System.out.println(Arrays.toString(arr));
System.out.print("排序的结果:");
sort(arr, 0, arr.length-1);
print(arr);
}
static void sort(int[] arr,int left,int rigth){
if(left==rigth)return;
//数组中间值
int mid = left+(rigth-left)/2;
//左边排序
sort(arr, left, mid);
//右边排序
sort(arr, mid+1, rigth);
marge(arr, left, mid+1, rigth);
}
static void marge(int[] arr,int leftptr,int rigthptr,int certerptr){
int[] temp = new int[certerptr-leftptr+1];
int mid= rigthptr-1;
int i=leftptr;
int j=rigthptr;
int k=0;
while(i<=mid&&j<=certerptr){
if(arr[i]<arr[j])
{
temp[k++]=arr[i++];
}else{
temp[k++]=arr[j++];
}
}
while(i<=mid)temp[k++]=arr[i++];
while(j<=certerptr)temp[k++]=arr[j++];
for(int m=0;m<temp.length;m++){ arr[leftptr+m]=temp[m];
}
}
static void print(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.print(" "+arr[i]);
}
}
}
结果打印如下:
原序列输出:[1, 4, 7, 8, 3, 6, 9]排序的结果: 1 3 4 6 7 8 9
标签:sort,arr,java,--,mid,int,print,2.0,left 来源: https://www.cnblogs.com/Open123/p/15695972.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。