java⼆路归并排序_java⼆路归并排序⽰例分享
排序的合并⽅法有很多,⽽合并意味着将两个或多个有序表合并到⼀个新的有序表中,通常我们把这种合并⽤于内部排序或外部排序中使⽤,爱站技术频道今天只分享java⼆路归并排序⽰例,⼀起进⼊下⽂了解吧!
归并排序就是采⽤分治法进⾏排序:
(1)将⼀个数组分成⼩的2个数组分别进⾏排序;
(2)之后将分出来的已经拍好序的数组进⾏合并;
import java.util.Scanner;
public class MergeSort {
int[] a=null;
int[] b=null;
int n;
Scanner sin=null;
MergeSort()
{
a=new int[10000];
b=new int[10000];
sin=new Scanner(System.in);
}
void sort(int start,int end)    //排序d]
{
int mid;
if(start >= end)    //只有⼀个元素的时候,直接返回
return ;
else
{
mid=(end-start)/2;    //将元素分成两半,分别排序
sort(start,start+mid);
sort(start+mid+1,end);
//归并两个有序的数组start+mid]和a[start+d]
merge(start,start+mid,end);
}
}
void merge(int start,int mid,int end)    //归并
{
int t=start;
int i=start,j=mid+1;
while(i
{
if(a[i]
b[t++]=a[i++];
else
b[t++]=a[j++];
}
while(i
b[t++]=a[i++];
while(j
b[t++]=a[j++];
for(i=start;i
a[i]=b[i];
}
void run()
{
System.out.print("输⼊要排序的数的个数:");
Int();
for(int i=0;i
a[i]=Int();
sort(0,n-1);
System.out.println("排序结果是:");
//输⼊要排序的数据
for(int i=0;i
System.out.println(a[i]+"  ");
}
public static void main(String[] args) {
new MergeSort().run();js合并两个数组
}
}
以上就是爱站技术频道介绍的java⼆路归并排序⽰例分享,只要能够改善项⽬效果,再多的付出都是值得的,如果还想了解更多专业知识,请关注js.aizhan吧!