ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

归并排序C语言图文详解

2022-09-13 09:03:05  阅读:219  来源: 互联网

标签:归并 编辑 int C语言 索引 算法 序列 排序 图文


 算法原理:

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

图解算法思路:

 

​编辑

 

​编辑

 

​编辑

 

​编辑

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);
    }
}



[点击并拖拽以移动]

 

标签:归并,编辑,int,C语言,索引,算法,序列,排序,图文
来源: https://www.cnblogs.com/guojianyu/p/16688014.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有