算法原理:
改归并排序将序列折半分成两个子序列,然后继续拆分,直到每个序列只有一个数据时,再将各个子序列排序后合并叠加。直到所有子序列都合并,排序完成。该算法采用分治的思想。
图解算法思路:
void Merge(int unsorted[],int left,int mid,int right,int temp[])
{
int i = left;//左序列初始索引
int j = mid+1;//右序列初始索引
int k = 0;//临时数组索引
while (i <= mid && j <= right)
{//将两边数组的元素进行比较,依次填进临时数组
if(unsorted[i] <= unsorted[j])//先将较小的放进去
{
temp[k++] = unsorted[i++];
}
else
{
temp[k++] = unsorted[j++];
}
}
while(i <= mid)
{//将左边剩余元素填充进temp中
temp[k++] = unsorted[i++];
}
while(j <= right)
{//将右序列剩余元素填充进temp中
temp[k++] = unsorted[j++];
}
k = 0;
//将temp中的元素全部拷贝到原数组中
while(left <= right)
{
unsorted[left++] = temp[k++];
}
}
void MergeSort(int unsorted[],int left,int right,int temp[])
{
if(left < right)
{
int mid = (left + right) / 2;
MergeSort(unsorted, left, mid, temp);
MergeSort(unsorted, mid+1, right, temp);
Merge(unsorted, left, mid, right, temp);
}
}
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
csdn文章推荐受影响解决办法10个字10行
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)