public static void mergeSort(int [] data,int low,int high)
{
if(low<high)
{
int mid=(low+high)/2;
mergeSort(data, low,mid);
mergeSort(data,mid+1,high);
merge(data,low,high,mid);
}
}
//将两个有序表归并
public static void merge(int [] data,int low,int high,int mid)
{
int[] result= new int [high-low+1];
int i=low,j=mid+1;
int k=0;
while(i<=mid&&j<=high)
{
if(data[i]<data[j])
{
result[k++]=data[i++];
}
else
{
result[k++]=data[j++];
}
}
while(i<=mid&&k<result.length)
{
result[k++]=data[i++];
}
while(j<=high&&k<result.length)
{
result[k++]=data[j++];
}
//将归并后的数字复制到原数组
for(int m=0;m<result.length;m++)
{
data[low]=result[m];
low++;
}
}
归并排序
最新推荐文章于 2024-03-26 17:18:09 发布