归并排序C语言图文详解

归并排序C语言图文详解,第1张

算法原理:

       改归并排序将序列折半分成两个子序列,然后继续拆分,直到每个序列只有一个数据时,再将各个子序列排序后合并叠加。直到所有子序列都合并,排序完成。该算法采用分治的思想。

图解算法思路:


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行

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/2889732.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-14
下一篇 2022-09-14

发表评论

登录后才能评论

评论列表(0条)

保存