学术诚信声明:
本人郑重声明:所发表的报告不存在抄袭,剽窃他人学术成果的行为,本人充分理解学术不端行为的后果,并对所有步骤提供图片证明。
一.选题与初次尝试
作为编程初学者,接触排序算法时,归并排序绝对是绕不开的重要知识点。它凭借稳定的时间复杂度,在很多场景中都有着不可替代的作用。在老师提供的155个选题中,我选择了47.从而有幸进行这段二路归并排序的 C 语言代码,从最初的运行测试,到排查修复问题,再到用 VS Code 调试优化,最后结合豆包和 B 站教程完成开源上传,整个过程踩了不少坑,也收获满满。今天就把这份完整的实战经验分享给大家。
二.原代码选择+错误分析+修复过程

本次优化的对象是一段基于分治法实现的二路归并排序C语言代码,在编译运行及功能验证阶段,共发现4类核心问题,以下为错误分析及对应编译/运行截图说明:左图为原代码,右图为修正图。




全局数组隐患:全局数组可被所有函数直接修改,若扩展程序增加其他排序函数,易引发数据冲突;且全局变量长期占用内存,降低程序资源利用率,截图1:展示多函数调用全局数组时,数据被意外篡改的运行结果,所以直接删除大括号后面的图标。
数组下标不规范:原代码数组下标从1开始,与C语言数组下标从0开始的规范冲突,易导致阅读混淆,且在扩展代码时可能触发下标越界风险:截图2:展示下标从1开始时,遍历数组末尾元素的异常输出.
输入校验缺失:当用户输入非数字字符时,函数读取失败,程序无提示直接进入错误逻辑,输出混乱结果 截图3:展示输入字母时,程序的错误运行界面,是因为缺少头文件。加上#include<stdlib.h>即可。
最终使代码无报错警告

以下为流程图可帮助新手快速掌握逻辑:

开发环境配置
普通的VS不能满足精致的学习任务,因此安装 Visual Studio Code(VSCode)时要配置基础插件
(如 GitLens、Gitee 插件)
注册 Gitee 账号并创建代码仓库,在这过程中,可能因为繁琐的步骤而心急,但不要担心,再尝试一次事情就会解决!
要在git bish里面输入指令,关于你的邮箱和用户名,如果任然标红,就需要在环境变量里面利用pash来输入bin和com的路径编辑+确定,若出现下图则证明下载成功。
本地仓库与远程仓库连接
通过 git init 初始化本地 Git 仓库
关联远程仓库:git remote add origin <Gitee仓库SSH/HTTPS地址>,SSH与HTTPS各有好坏,但一般用HTTS,会更好一些。
拉取远程仓库内容:git pull origin master(或分支名)
基础代码管理操作
在 VSCode 源代码管理中提交代码:git add . + git commit -m "提交信息"
推送代码到 Gitee:git push origin master(或指定分支)
处理冲突:通过 VSCode 冲突标记工具或命令行解决差异
分支管理与协作开发
创建新分支:git checkout -b <分支名>
切换分支:git checkout <分支名>
合并分支:git merge <分支名>(需在目标分支操作)
推送分支到远程:git push origin <分支名>,以上是一些分支管理的基本步骤。
高级功能与优化
通过 .gitignore 文件排除无需版本控制的文件(如 node_modules/)
使用 VSCode 的 Git 历史工具查看提交记录和代码差异
配置 SSH 密钥实现免密推送(ssh-keygen + 公钥上传至 Gitee)
常见问题与解决方案
推送失败:
检查网络、权限或远程仓库地址在 VSCode 中配置 Git 路径和用户信息(全局或项目级),要确保复制正确,空格,引号的问题,如果显示错误,要使用Git Bish输入指令来检验那一步错误。
路径问题:

在 VSCode 中配置 Git 路径和用户信息(全局或项目级),要确保复制正确,空格,引号的问题,如果显示错误,要使用Git Bish输入指令来检验那一步错误。明确变更来源后手动合并。
还要检查是否在环境变量里面加入git的bin 和cmd的路径。
误提交回退:
git reset --soft HEAD~1 或 git revert
实战案例
演示从零创建项目到多分支协作的全流程
结合 Gitee 的 Pull Request(PR)功能完成代码审核与合并

总结
C语言作为一门面向过程的编程语言,具有高效、灵活、接近底层的特点,在系统编程、嵌入式开发等领域仍占据不可替代的地位。本次归并排序的优化过程,让我深刻体会到C语言的两大核心优势:一是对内存的直接操作能力,通过 malloc / free 实现动态内存管理;二是函数指针和数传参的灵活性,支持模块化的算法实现。
同时,也认识到C语言的局限性:缺乏内置的容器和异常处理机制,需要程序员手动管理内存和处理错误。随着编程语言的发展,C++、Java等语言在C语言的基础上增加了面向对象、自动内存管理等特性,但C语言的高效性和底层操控能力仍无法被完全替代。未来,C语言可能会在物联网、人工智能芯片开发等领域持续发挥作用,与其他高级语言形成互补。
五、 附录:规范参考文献与资源链接
5.1 参考文献
[1] 谭浩强. C程序设计(第五版)[M]. 北京:清华大学出版社,2017.
[2] 数据结构(C语言版)编写组. 数据结构(C语言版)[M]. 北京:高等教育出版社,2020.
[3] Knuth D E. The Art of Computer Programming, Volume 3: Sorting and Searching[M]. Addison-Wesley,1997.
5.2 资源链接
[1] 哔哩哔哩归并排序优化教程:https://www.bilibili.com/video/BV1Pt411R7gQ
[2] C语言数组传参原理详解:https://blog.csdn.net/weixin_45799835/article/details/121625247
[3] Gitee开源仓库地址:https://gitee.com/用户名/MergeSort-Optimization
转载自CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/Y625434/article/details/156654579



