排序算法系列:归并排序(Merge sort)(C语言)

2023-05-16

通俗理解:运用分而治之的思想,编写递归函数,将大数组排序转化为小数组排序,最后再将其合并。
void merge_sort(int*p,int low,int high)
{
	int mid = (low+high)/2;
	if (low <high)
	{
		merge_sort(p,low,mid);
		merge_sort(p,mid+1,high);
		merge(p,low,mid,high);
	}
}

void merge(int *p,int low,int mid,int high)
{
	int i,k;
	int* temp = (int*)malloc((high-low+1)*sizeof(int));//合并空间
	int start1 = low;
	int end1 = mid;
	int start2 = mid+1;
	int end2 = high;
	//比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置
	for (k = 0;start1<=end1 && start2<=end2;k++)
	{
		if (p[start1]<p[start2])
			temp[k] = p[start1++];
		else
			temp[k] = p[start2++];
	}
	//检测剩余项,若有剩余,直接拷贝出来粘到合并序列尾
	while (start1<=end1)
		temp[k++] = p[start1++];
	while (start2<=end2)
		temp[k++] = p[start2++];
	//将排好序的数组拷贝到原数组
	for (i = 0;i<high-low+1;i++)
		p[low+i] = temp[i];
	//合并过程
	printf("%d:",mid);
	for (i = 0;i<high-low+1;i++)
		printf("%d ",p[low+i]);
	printf("\n");
	free(temp);
}
平均时间复杂度Θ(n log n)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

排序算法系列:归并排序(Merge sort)(C语言) 的相关文章

随机推荐

  • Ubuntu18.04 安装gnome-tweak-tool安装TopIcons Plus | 解决软件图标不显示问题 | 解决坚果云图标不显示问题

    1 安装gnome tweak tool 终端执行命令 xff1a sudo apt install gnome tweak tool 在所有应用程序中搜索 34 tweak 或 34 优化 xff0c 即可启动 2 安装TopIcons
  • 爬虫(一)基础介绍

    文章目录 1 爬虫简介1 1 robots协议1 2 反爬手段1 3 请求组成1 4 响应组成1 5 POST 请求与 GET 请求 2 requests库2 1 GET请求2 2 POST请求2 3 代理 1 爬虫简介 网络爬虫也叫做网络
  • Gradle 和 Gradle Wrapper 到底是什么关系。

    Gradle Wrapper 我们推荐使用 Gradle Wrapper 执行gradle 构建 xff0c xff08 后面简称Wrapper xff09 Wrapper 实质上是一个脚本 xff0c 这个脚本使用申明版本的gradle
  • 【AD16】PCB设计时元器件怎么放到板子背面

    1 首先拖动元器件 2 再按 L 键 3 放置即可
  • C++语言及网络编程书籍整理

    C 43 43 语言及网络编程书籍整理 作者 谢勇 都是我看过或正要看的书 xff0c 晾晾书架 xff0c 希望对后来者也有一点作用 xff0c 当年我也是浪费时间看了一些没有价值的书籍 xff0c 颇为后悔 xff0c 现将精华总结如下
  • Kotlin在Android Studio中安装与配置

    Kotlin的安装与配置 因为本人使用的开发工具是Android Studio xff0c 所以这里只说明一下Kotlin在Android Studio中的安装与配置 Kotli插件的安装 在安装Kotlin插件之前 xff0c Andro
  • Makefile Android.mk 引发的思索(转)

    Makefile Android mk 引发的思索 转至 xff1a https www cnblogs com quansir p 4269951 html 在我们编写 Android 平台 cocos2d x 游戏的时候 xff0c 我
  • Kali Linux Gnome 环境下使用全局菜单

    Kali Linux Gnome 环境下使用全局菜单 2022 09 24 文章目录 Kali Linux Gnome 环境下使用全局菜单1 目标2 预备3 操作3 1 安装3 2 配置3 3 启用3 4 测试3 5 自启 1 目标 Gno
  • 发布jar到本地仓库

    Android Studio 在Module的buill gradle文件中添加插件 apply plugin span class token operator span span class token string 39 maven
  • AOP切面以及@Valid注解执行顺序

    结论 SpringBoot是先执行 64 Valid注解再执行切面 所以无法将AOP的触发位置移动到 64 Valid之前 自定义注解如果想要在 64 Valid校验之前触发 要么通过拦截器 但拦截器对参数的获取较为麻烦 建议使用Contr
  • Android Studio 使用jni调用第三方so

    源码部分 项目需要调用第三方so函数 xff0c 由于需要调用的函数不符合jni规范 xff0c 这里用jni调用编写的native方法 xff0c native方法再调用三方so函数 Android mk LOCAL PATH 61 ca
  • 4年产品点滴心路——谈谈形而上的3个产品素质

    我是一名互联网产品人员 xff0c 曾供职过多家互联网公司 xff0c 包括一些员工数千的老牌龙头企业和一些初创公司 排除老生常谈的产品技能以及方法论 xff0c 我最近对一些大型企业初创项目 新型领域创业公司的产品人员的工作软实力有很大兴
  • 四年产品点滴心路(二)——互联网公司的组织规模与产品特点浅析

    新年伊始 xff0c 让我们放慢脚步 xff0c 回溯互联网服务长河的源头 xff1a 计算机技术 2000年以来 xff0c 国内普通大学里 xff0c 一位只要对计算机 软件有兴趣并打算在此行业长远发展的大学生 xff0c 大都经历过在
  • 云之彼端,牵手未来—— “我思故我在”—我眼中的第四届中国云计算大会

    一 xff0e 满怀激动踏征程 第四届全国云计算大会初体验 2012年5月23日至25日 业界瞩目的第四届中国云计算大会 xff08 以下简称 大会 xff09 在京隆重举行 本次大会由国家发展和改革委员会 工业和信息化部 北京市人民政府及
  • 落花渐欲迷人眼,移动前景看用户

    火红的深秋10月 xff0c 万众瞩目的第三届中国移动开发者大会于19日在北京国家会议中心如期举行 本次大会邀请到了诸多互联网巨头公司中相关项目负责人及移动互联先驱精英 xff0c 百家争艳齐聚一堂 xff0c 共同探讨在移动互联网高速发展
  • 新员工总结

    感谢29 日下午张宁主编为我们移动频道新员工安排的培训 通过本次员工培训 xff0c 在工作目标和方向上有了较为清晰的认识 xff0c 主要总结如下 xff1a 1 明确移动频道工作重心 xff1a 移动 应用 开发 围绕这三点 xff0c
  • 微软Win8开发马拉松感悟

    前几天前往微软win8开发者马拉松大赛 xff0c 对于微软中国有了一些了解 xff0c 也有了一些体悟 xff0c 在这里稍微记录一下 首先一点就是微软对于开发者的态度 在会场看到了许多沙发和抱枕 xff0c 还有毛毯等 xff0c 另外
  • C/C++ | g++ 编译指定了链接库路径,仍报错找不到函数:Undefined reference

    题外话 xff1a 这次是被编译顺序坑了很久 还是基础学的不扎实 实验背景 xff1a 用g 43 43 编译cpp文件 xff0c 依赖于opencv 待编译的cpp文件cv test cpp内容如下 xff1a include 34 o
  • 什么是end-to-end的模型

    端到端的模型目前很流行 xff0c 那么什么是端到端的模型呢 xff0c 有没有一个很比较明确的解释 xff1f 在 1 中 xff0c 作者是这样说的 The entire model is trained jointly from sc
  • 排序算法系列:归并排序(Merge sort)(C语言)

    通俗理解 xff1a 运用分而治之的思想 xff0c 编写递归函数 xff0c 将大数组排序转化为小数组排序 xff0c 最后再将其合并 void merge sort int p int low int high int mid 61 l