歸併排序的java實現
阿新 • • 發佈:2018-12-19
package 小米oj;
public class 歸併排序 {
public static void main(String[] args) {
int a[]= {1,2,2,35,22,55,100,2,1000};
use(a);
for(int i = 0;i<a.length;i++)
{
System.out.println(a[i]);
}
}
public static void use(int a[])
{
merge(a,0,(a.length-1)/2,a.length-1);
}
public static void mergesort (int a[],int start,int mid,int end)
{
int temp[] = new int[end-start+2];
int p=0;
int i=start,j=mid+1;
while(i<=mid&&j<=end)
{
if(a[i]<=a[j])
{
temp[p++] = a[i++];
}
else {
temp[p++] = a[j++];
}}
while(i<=mid)
{
temp[p++] = a[i++];
}
while(j<=end)
{
temp[ p++] =a[j++];
}
p=0;
for(int pp=start;pp<=end;pp++)
{
a[pp] = temp[p++];
}
}
public static void merge(int a[],int start,int mid,int end)
{
if(start+1!=end)
{if(start!=end) {
merge(a,start,(start+mid)/2,mid);
merge(a,(mid+1),(mid+1+end)/2,end);}
}
mergesort(a,start,mid,end);
}
}