C语言递归实现归并排序

本文详细介绍了如何使用C语言递归实现归并排序。通过分治法,将无序队列不断拆分成小的有序子序列,然后进行合并。在递归过程中,展示了每一步的序列变化,最后得到完整的有序序列。文章还提出了一个问题,探讨为什么在合并过程中需要即时拷贝到原始数组,而非最后一次性拷贝。
摘要由CSDN通过智能技术生成
思想

将两个有序的队列合并成一个大的有序的序列,反复操作,直到合并成一个有序的队列。

思路

一个大的无序队列,采用分治法进行排序。先将无序队列一分为二再一分为二,层层递归到只有两个数时,进行排序,然后再依次返回,在返回的时候,再次对两个有序子序列进行合并,然后层层递归合并,到最后只有一个有序的队列完毕。

此处盗图二张:
这里写图片描述
这里写图片描述

图片来源:
图解排序算法(四)之归并排序

实现
static void merge_conquer(int arry[], int left, int mid, int right, int *temp)
{
    int l = left;
    int r = mid + 1;
    int i = 0;

    for (i = 0; i < right; i++)
        printf("%d ", arry[i]);
    printf(
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值