TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
归并排序指的是将两个已经排好序的序列合并成一个序列的操作 ,具体原理如下:
1,将序列每相邻两个数字进行归并操作,形成floor(n/2)个序列,排序后每个序列包含两个元素。
2,将上述序列再次归并,形成floor(n/4)个序列,每个序列包含4个元素。
3,重复步骤2 直至完成。
public static void Merge(int[] temp,int left,int mid,int right)
{
inti,left_end,num_elements,tmp_pos;
left_end=mid-1;
tmp_pos=left;
num_elements=right-left+1;
while((left<=left_end)&&(mid<=right))
{
if(myArray[left]<=myArray[mid])
{
temp[tmp_pos]=myArray[left];
tmp_pos=tmp_pos+1;
left=left+1;
}
else
{
temp[tmp_pos]=myArray[mid];
tmp_pos=tmp_pos+1;
mid=mid+1;
}
}
while(left<=left_end)
{
temp[tmp_pos]=myArray[left];
left=left+1;
tmp_pos=tmp_pos+1;
}
while(mid<=right)
{
temp[tmp_pos]=myArray[mid];
mid=mid+1;
tmp_pos=tmp_pos+1;
}
for(i=0;i<num_elements;i++)
{
myArray[right]=temp[right];
right=right-1;
}
}
|
|