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;
}

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python中保留小数位数_python取小数部分

    python中保留小数位数_python取小数部分一.format方法a=1.23455print(format(a,’.2f’))print(format(a,’.4f’))符合四舍五入print(‘{:.2f}{:.3f}’.format(1.23455,1.23455))使用{}作为占位符,可以同时操作多个数字二.’%2f’%f方法a=1.23455print(‘%.4f’%a)符合四舍五入三.round()方法a=1.23455print(round(a,2))print(round(a,4))

  • windows 命令行杀死进程_杀死进程命令

    windows 命令行杀死进程_杀死进程命令使用命令杀进程的几种方式:1,根据进程名称杀进程:taskkill/f/t/imqq.exe//此例是杀QQ进程2,通过进程号杀进程:taskkill/pid9396-f//规则taskkill/pid[进程号]-t(结束该进程)-f(强制结束该进程以及所有子进程)这种方式是成功的;进程号获取方式:快捷键ctrl+alt+delete找到任务管理器,PID即为进程号如果没有PID,右键名称,勾选PID即可;杀进程命令:tas…

  • Idea激活码永久有效Idea2021.3.1激活码教程-持续更新,一步到位

    Idea激活码永久有效Idea2021.3.1激活码教程-持续更新,一步到位Idea激活码永久有效2021.3.1激活码教程-Windows版永久激活-持续更新,Idea激活码2021.3.1成功激活

  • ORA-01017解决方案「建议收藏」

    ORA-01017解决方案「建议收藏」ora-01017是用户登录的报错。解决思路:1)确认所登用户的状态。可能是被锁了,可能是密码过期状态。修改之,即可2)当然是确认用户名密码是否输入正确。不确定密码的话可以重设。3)oracle-12C有了数据库容器概念。所登用户是否在PDBORCL里,tnsnames.ora文件里是否配置了PDBORCL,登录时是否选中了PDBORCL4)所登用户是否是sysdba。是的话登录语句要加assysdba这4步确定好了,能解决100%的ora-01017报错情况。…

  • sql server 2008 r2 序列号密钥实测可用20210906

    sqlserver2008密钥Developer:PTTFM-X467G-P7RH2-3Q6CG-4DMYBEnterprise:JD8Y6-HQG69-P9H84-XDTPG-34MBBMicrosoftSQLServer2008R2序列号密钥开发版32位:MC46H-JQR3C-2JRHY-XYRKY-QWPVM开发版64位:FTMGC-B2J97-PJ4QG-V84YB-MTXX8工组版:XQ4CB-VK9P3-4WYYH-4HQX3-K2R6QWEB版:FP4P7-YK

  • ADRC例程

    ADRC例程ADRC优化fhan《自抗扰控制入门》自抗扰死忠粉ADRC.H#ifndef_ADRC_H_#define_ADRC_H_typedefstruct{/*****安排过度过程*******/floatx1;//跟踪微分期状态量floatx2;//跟踪微分期状态量微分项floatr;//时间尺度floath;//ADRC系统积分时间uint16N0;/…

发表回复

您的电子邮箱地址不会被公开。

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