- 博客(3)
- 收藏
- 关注
原创 快速选择算法
<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 335
原创 手写三种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 1066
原创 编译期检查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 442
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人