您的位置:首页 > 其它

算法-合并排序

2016-07-02 10:02 316 查看
时间复杂度:o(nlog(n))

代码:

package suanfa;
//合并排序

public class hebingpaixu {

public static void main(String[] args) {
int a[]={1,9,8,7,5,4,2};
int temp[]=new int[a.length];
sort(a,temp,0,a.length-1);
for(int i=0;i<a.length;i++)
System.out.print(a[i]+"  ");
}
public static void sort(int a[],int []b,int left,int right){

if(left<right){
int middle=(left+right)/2;
sort(a,b,left,middle);
sort(a,b,middle+1,right);
merge(a,b,left,middle,right);

}

}
public static void merge(int a[],int temp[],int left,int middle,int right){
int i=left;
int j=middle+1;
int k=0;
while(i<=middle&&j<=right){
if(a[i]<a[j])
temp[k++]=a[i++];
else
temp[k++]=a[j++];

}
while(i<=middle){
temp[k++]=a[i++];
}
while(j<=right){
temp[k++]=a[j++];
}
for(int i1=0;i1<k;i1++){
a[i1+left]=temp[i1];
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法