![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 78
again1943
ZJUER
展开
-
编译期检查class是否有继承关系
最近看sigc++的代码,看到其中有编译期检测class是否有继承关系的代码,觉得比较精妙,于是拿出来剖析一下// From Esa Pulkkin: /** * Compile-time determination of base-class relationship in C++ * (adapted to match the syntax of boost's type_traits library). * * Use this to provide a template speci原创 2010-07-14 12:52:00 · 443 阅读 · 0 评论 -
快速选择算法
<br />快速选择算法,就是从给定的一个集合S={a1,a2,...an}中选出第K个大小的数,或者给出其所在的下标之类的。<br /> <br />如果使用排序,然后返回第K个元素的下标,复杂度是O(NlogN)<br />如果使用quick sort的一个变种,叫 quick select,则平均复杂度为O(N),最坏复杂度为O(N^2)<br />如果使用一种线性选择算法,则可以达到最坏O(N)的复杂度,不过实际应用中,该算法通常比quick select慢1到2倍,所以并不常用(参考Blum, F原创 2010-08-14 19:02:00 · 336 阅读 · 0 评论 -
手写三种sort算法
最近要找工作,于是手写了stl风格的三种sort算法,quick sort,merge sort和heap sort,其中quick sort分别实现了递归和非递归两种,代码如下 ,经过了基本的正确性测试(不保证对所有类型都正确,因为没充分测试过),然后性能测试与C++的std::sort和std::stable_sort做了一些对比 代码如下: #include #include #include #include namespace fatrat { using原创 2010-08-14 02:59:00 · 1067 阅读 · 0 评论