对长度为 n 的数组 arr,调用 `merge_sort(a, 0, n-1)`,在排序过程中,`merge` 函数的递归调用次数大约是多少?

news/2025/11/9 20:40:58/文章来源:https://www.cnblogs.com/kkman2000/p/19205242

归并排序(Merge Sort) 的标准 基于C++ 实现:

对长度为 n 的数组 arr,调用 merge_sort(a, 0, n-1),在排序过程中,merge 函数的递归调用次数大约是多少?


✅ 一、代码结构回顾

关键递归函数:

void merge_sort(int arr[], int left, int right) {if (left < right) {int mid = left + (right - left) / 2;merge_sort(arr, left, mid);merge_sort(arr, mid + 1, right);merge(arr, left, mid, right);}
}

即每次:

  • 把数组分成两半;
  • 对左右部分分别递归排序;
  • 调用一次 merge() 进行合并。

✅ 二、递归次数分析

对于长度为 n 的数组:

  • 递归深度为 log₂(n) 层;
  • 每一层中会有若干次 merge() 调用。

具体来看:

层级 子数组数 每层 merge 调用次数 总元素个数
第 0 层 1 1 n
第 1 层 2 2 n
第 2 层 4 4 n
第 log₂(n) 层 n/2 n/2 n

✅ 三、merge 调用总次数

  • 每次 merge_sort 会调用一次 merge()
  • 对于 n 个元素,递归树共有 n 个叶子节点(每个元素单独为一部分);
  • 每个非叶子节点对应一次 merge() 调用。

二叉树的非叶节点数约为 n - 1,即:

[
\text{merge 调用次数} \approx n - 1 = O(n)
]


✅ 四、时间复杂度对比(加深理解)

  • 单次 merge 操作: O(n)
  • merge 调用次数: O(n)
  • 递归层数: O(log n)

总体时间复杂度:
[
T(n) = 2T(n/2) + O(n) = O(n \log n)
]


✅ 五、正确答案

在排序过程中,merge 函数的递归调用次数约为:

B. O(n)


✅ 附加总结

项目 复杂度
merge 函数调用次数 O(n)
每次 merge 时间 O(n)
总时间复杂度 O(n log n)
空间复杂度 O(n)

👉 结论:

merge 函数被调用约 O(n) 次,但整个排序的时间复杂度是 O(n log n)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/960722.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解析SP3D VUE和PDMS RVM文件-PlantAssistant

在PlantAssistant中增加视图相关设置选项,如设置是否显示坐标轴、视图方块、三维视图背景,可以设置背景颜色,还可以设置一张图片作为三维视图背景。引言 依托主流工厂设计软件数字化交付数据文件,AVEVA公司PDMS/E3…

古建筑学习

http://www.sihey.com/zsyl/pw/作者:太一吾鱼水 宣言:在此记录自己学习过程中的心得体会,同时积累经验,不断提高自己! 声明:博客写的比较乱,主要是自己看的。如果能对别人有帮助当然更好,不喜勿喷! …

VS Code 1.105正式发布: AI 新特性详解:7 大亮点全面提升智能开发体验 - 详解

VS Code 1.105正式发布: AI 新特性详解:7 大亮点全面提升智能开发体验 - 详解2025-11-09 20:29 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflo…

20251109-3

经过今天晚上近两个小时的努力,终于初具雏形了!! 添加功能如下: 1.增加了计量分数,和金币的功能。 2.增加了属性加点功能。 3.增加了怪物的增长曲线。 4.增加了界面跳转和回合重置。 也能应该够格算一个纯前端的简…

kettle从入门到精通 第110课 ETL之kettle webspoon的两种部署方式docker+tomcat使用教程

大家好,经常有小伙伴私信我咨询webspoon的部署问题,今天周末抽点时间一起梳理学习下。 1、docker方式部署 1)docker方式部署可以参考我之前的文章【kettle从入门到精通 第四十八课 ETL之kettle webspoon】 2)有时候…

【达梦数据库】性能优化-转正官网

【达梦数据库】性能优化-转正官网一、前言 1.1 概述 性能优化是指在不影响系统运行正确性的前提下,使之运行地更快,完成特定功能所需的时间更短。达梦数据库性能优化主要包含以下内容: @list l0:level1{ mso-level-…

Python中`a = 10`的6种读法对比:哪种最贴合名字-对象模型?

以下是针对a = 10语句设计的6种常见读法,结合Python名字-对象绑定模型(呼应前文《西游记》“符咒-山”比喻),通过列表对比各读法的优劣,最终明确适配Python认知的最优选择: Python中a = 10的6种读法对比:哪种最…

netgear r6220 路由器,刷openwrt后,体系备份还原

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

文字识别准确度

文字识别准确度coding: utf-8 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import Dataset, DataLoader from torchvision import transforms from PIL import Image, Ima…

原生多模态AI架构:统一训练与跨模态推理的环境实现与性能优化

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

VBA之Word应用第四章第三节:段落集合Paragraphs对象的手段(一)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

日记?

还是写一写的好虽然叫日记但是并不是日日记,差不多就是有话就写没话不硬挤吧。 尽量避免写垃圾话(存疑)。 不喜欢流水账,流水账太无聊了,写流水账的就应该重修小学学位攻读废话博士。 2025.11.9 前几天因为心态彻…

2025校运会小记

2025 校运会小记 前言 update 2025.11.09 本来拖到这么久还没有开始写,大概是要咕咕掉了的。但是想到这个运动会还是太有意思了,所以写吧。这篇应该没有照片,因为懒得放,因为放照片是不是得把其他人(以及我自己?…

安卓项目调用摄像头或相机。调用不了相机解决方案

这里推荐两篇文章: https://blog.csdn.net/weixin_31569663/article/details/148461910 这个是介绍了如何声明和请求相机及存储权限,然后详细说明了使用Camera API的基本流程,包括启动预览、拍照及图片保存。之后,…

2025 年 11 月上海老房翻新装修公司推荐排行榜,毛胚房改造/局部翻新/设计施工/水电改造/现代简约/奶油风格/法式风格/地中海风格/中式风格/全包装修/半包装修公司推荐

2025 年 11 月上海老房翻新装修公司推荐排行榜,毛胚房改造/局部翻新/设计施工/水电改造/现代简约/奶油风格/法式风格/地中海风格/中式风格/全包装修/半包装修公司推荐随着上海城市更新的持续推进,老房翻新与毛胚房改…

用《西游记》讲透Python name模型:撕最后一张符咒,山为何会消失?

用《西游记》讲透Python name模型:撕最后一张符咒,山为何会消失? 看过《西游记》的人都记得一个经典场景:孙悟空大闹天宫后,被如来佛祖压在五行山下,山顶还贴了一张写着“唵嘛呢叭咪吽”的符咒——这张符咒如同“…

鸿蒙应用开发实战:实现分享卡片保存为图片功能

本文将详细介绍如何在鸿蒙应用中实现将UI组件保存为图片并存储到相册的功能,通过componentSnapshot和photoAccessHelper等核心API,为用户提供便捷的分享体验。功能概述 在现代移动应用中,分享功能是提升用户活跃度和…

详细介绍:【Visual Studio】Visual Studio Community 安装已完成,但出现警告:无法安装 sqlsysclrtypes

详细介绍:【Visual Studio】Visual Studio Community 安装已完成,但出现警告:无法安装 sqlsysclrtypespre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: …

nvidia边缘计算平台 —— Jetson AGX Thor —— 英伟达NVIDIA Jetson AGX Thor 128G开发者套件 AI智能 T5000模组

nvidia边缘计算平台 —— Jetson AGX Thor —— 英伟达NVIDIA Jetson AGX Thor 128G开发者套件 AI智能 T5000模组本博客是博主个人学习时的一些记录,不保证是为原创,个别文章加入了转载的源地址,还有个别文章是汇总…

知识学报:树算法(1)

未完成不是题解不是教学!!! 11.7 CSES 1674 给定一颗树求他的子树有多少节点。不提。 CSES 1130 给定一棵树,要求选一些边,要求这些边连接的点没有重复。问最多选多少条边。 简单的树形 dp,对每个点统计以它为根…