归并排序
程序员文章站
2022-05-13 19:25:26
...
归并排序就是讲一个数组分成两个数组,依次对这两个数组进行排序,再将这两个数组进行整合排序,然后每个数组进行递归操作。代码如下:
public class guibing {
public static int[] sort(int []a)
{
if(a.length==1)
{
return a;
}
else if (a.length==2)
{
if(a[0]>a[1])
{
int num;
num=a[1];
a[1]=a[0];
a[0]=num;
}
return a;
}
else {
int []b=new int [a.length];
int x,y;
x=a.length/2;
y=a.length-x;
int []m=new int [x];
int []n=new int [y];
int []p=new int[x];
int []q=new int[y];
int i=0;
for( ;i<x;i++)
{
m[i]=a[i];
}
for(int j=0;j<y;j++)
{
n[j]=a[i];
i++;
}
p=sort(m);
q=sort(n);
i=0;
int j=0;
for(int k=0;k<x;k++)
{
if(j<y)
{
if(p[k]<q[j])
{
b[i]=p[k];
i++;
}
else if(p[k]>q[j])
{
b[i]=q[j];
i++;
j++;
k--;
}
else {
b[i++]=p[k];
b[i]=q[j];
i++;
j++;
}
}
else
{
b[i]=p[k];
i++;
}
}
if(j<y)
{
for(;j<y;j++)
{
b[i]=q[j];
i++;
}
}
return b;
}
}
public static void main(String []args)
{
int []a= {1,5,6,2,9,10,3,8,7,21,4};
int []b;
b=sort(a);
System.out.print("排完序后的顺序为:");
for(int i=0;i<a.length;i++)
{
System.out.print(b[i]+" ");
}
}
}
代码结果:
排完序后的顺序为:1 2 3 4 5 6 7 8 9 10 21
上一篇: 解码方法