STL 源代码剖析 算法 stl_algo.h — merge sort「建议收藏」

STL 源代码剖析 算法 stl_algo.h — merge sort

大家好,又见面了,我是全栈君。

本文为senlie原创。转载请保留此地址:http://blog.csdn.net/zhengsenlie


merge sort

———————————————————————-

描写叙述:归并排序

思路:

1.将区间对半切割

2.对左、右段分别排序

3.利用inplace_merge将左、右段合并成为一个完整的有序序列

复杂度:O(nlog n)

源代码:

template<class BidirectionalIter>
void mergesort(BidirectionalIter first, BidirectionalIter last){
	typename iterator_traits<BidirectionalIter>::diference_type n = distance(first,last);
	if(n == 0 || n == 1) return ;
	else{
		BidirectionalIter mid = first + n / 2;
		mergesort(first, mid);
		mergesort(mid, last);
		inplace_merge(first, mid, last);
	}
}

演示样例:

int main()
{

	int a[]={3,8,0,6,7,4,2,1,9,3,1,8,3,9,2,0,9};
	int *a_end=a+sizeof a/sizeof(int);
	

	std::cout<<"a before mergesort: ";
	std::for_each(a, a_end, print<int>);
	std::cout<<'\n';

	mergesort(a, a_end);

	std::cout<<"a after mergesort: ";
	std::for_each(a, a_end, print<int>);
	std::cout<<'\n';

	return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115937.html原文链接:https://javaforall.net

(0)
上一篇 2022年1月28日 下午1:00
下一篇 2022年1月28日 下午1:00


相关推荐

  • 转:js 将json字符串转换为json对象的方法解析「建议收藏」

    转:js 将json字符串转换为json对象的方法解析「建议收藏」例如:JSON字符串:varstr1=‘{“name”:“cxh”,“sex”:“man”}’;JSON对象:varstr2={“name”:“cxh”,“sex”:“man”};一、JSON字符串转换为JSON对象要使用上面的str1,必须使用下面的方法先转化为JSON对象://由JSON字符串转换为JSON对象varobj=eval(’(’+str+‘)’);或者varobj=str.parseJSON();//由JSON字符串转

    2026年4月17日
    5
  • 几种开源分词工具的比較

    几种开源分词工具的比較

    2021年11月16日
    43
  • RDLC报表开发_rdp报表 视频教程

    RDLC报表开发_rdp报表 视频教程【C#重构】VS2017中没有rdlc(报表设计器)(2)https://blog.csdn.net/MyxZxd/article/details/89847111步骤https://www.cnblogs.com/cuichaohui/p/9364439.html转载于:https://www.cnblogs.com/zuochencun/p/11351881.html…

    2022年10月8日
    4
  • 物联网架构及五大通信协议是什么_物联网不能实现哪种通信方式

    物联网架构及五大通信协议是什么_物联网不能实现哪种通信方式消息触达能力是物联网(internetofthings,IOT)的重要支撑,而物联网很多技术都源于移动互联网。柳猫将阐述移动互联网消息推送技术在物联网中的应用和演进。一、物联网架构和关键技术从开发的角度,无线接入是物联网设备端的核心技术,身份设备管理和消息推送技术是物联网云端的核心技术。而从场景体验的角度,除了前者,还要包括手机的前端开发技术。IP互联架构已是物联网的事实标准(有关物联网TCP/IP层关键技术将另文阐述,敬请关注)。本文所讲的消息推送技术是基于TCP/I…

    2026年1月15日
    6
  • fstream读写文件read_使用同一个fstream

    fstream读写文件read_使用同一个fstream1.fstream是什么?fstream是C++标准库中面向对象库的一个,用于操作流式文件。fstream本质上是一个class,提供file操作的各种方法。2.关系图basic_fstream是一个类模板,暂且不用深入理解它。我们关心的事,它前面继承的那一堆东西。fstream是basic_fstream<char>的一个模板类,也就说明,fstream也继承了一堆东西。我们再关心一下从ios_base基类,重点继承了什么?文件流的打开模式。3.实验3.1打开/创建文件

    2026年1月25日
    4
  • 网络安全-自学笔记

    网络安全-自学笔记目录WEB(应用)安全前端安全xss攻击后端安全文件上传漏洞WebShell解析安全数据安全sql注入通信安全WEB(应用)安全前端安全xss攻击后端安全文件上传漏洞WebShell解析安全数据安全sql注入网络安全-sqlmap学习笔记通信安全网络-http协议学习笔记(消息结构、请求方法、状态码等)…

    2022年6月9日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号