首页 > 编程语言 > 详细

《C++编译期快速排序》

时间:2020-08-06 17:49:12      阅读:120      评论:0      收藏:0      [点我收藏+]

 

照猫画虎,编译期快速排序,C++从入门到放弃?

 

0 is_seq & print 准备工作

技术分享图片

 

 

 

技术分享图片

 

 

 

技术分享图片

 

 

 技术分享图片

 

 

 技术分享图片

 

 

 

测试:

技术分享图片

 

 

 

 

1. divide 

技术分享图片

 

 

 

 

从测试代码入手:

技术分享图片

 

 

 

 

 

---

 

技术分享图片

 

 

 

特化

 

把第二个 seq 的头不断挪到  第一个 seq 的尾部

 

技术分享图片

 

 

 

sT  作为一个整体parameterType只能转化,不能递归;

要递归,则要把 sT 的第一个元素拆出来(xT)

 

技术分享图片

 

 

 

如果第一个seq 的元素个数小于 1+ 第二个 seq的元素个数,则把 xT 挪过去

 

技术分享图片

 

 

 

技术分享图片

 

 

 type 指向:未递归完、递归完,两个分支中的一个

 

技术分享图片

 

 

 

技术分享图片

 

 

 

技术分享图片

 

 

 

2. merge 

技术分享图片

 

 

技术分享图片

 

 技术分享图片

 

 

技术分享图片

 

 

 技术分享图片

 

 

技术分享图片

 

 测试

 

技术分享图片

 

 技术分享图片

 

 

 

直观写法

技术分享图片

 

 type 是最终排序好的,它也是个 seq;

 

debug 后的结果:

技术分享图片

 

 

 

debug 的过程:

技术分享图片

 

 技术分享图片

 

 merge 只针对seq 进行了特化

 

技术分享图片

 

 

 

技术分享图片

 

 

 

技术分享图片

 

 

 

 技术分享图片

 

 因为  conditional 里面就是个 type

 

 

技术分享图片

 

把 M、D和 type 挪到上面去——M挪上去,然后D替换掉

 

技术分享图片

 

 技术分享图片

 

 技术分享图片

 

 

 

太TMD黑科技了。。。

 

 

 

 

 

 

 

《C++编译期快速排序》

原文:https://www.cnblogs.com/cx2016/p/13447373.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!