- 博客(13)
- 收藏
- 关注

原创 两个个有趣的排序算法
算法导论在介绍了几个基础的排序算法之后,用决策树的形式,总结出基于比较的排序算法,O(nlgn)就是在渐进性上的最优实现。但之后还介绍了两个在最坏情况下,以线性时间完成的排序算法。当然,他们不基于关键值的比较。1,计数排序 (counting sort)计数排序的思想:假设元素的关键值取值在一个固定的范围中,然后对每个元素,统计所有关键值小于该元素关键值的元素个数(这就
2009-10-28 09:26:00
735
原创 程序员四重境界
程序员就是机器和现实生活的中介。第一境界:好奇的走向机器 在还很懵懂的高中,或许因为社会上的光环,或许是理科生情节对人文经管学科的不选择,还可能是计算机游戏带来的刺激,cs专业很吸引人。由此思想开始从自然的生活状态走向另一个世界。真正的体验从编程开始。在稍微对计算机软硬件体系有点仅停留在名词上的认识上后,开始了理论和实践高度结合的探索过程。 用语法极端苛刻的计算机语言去实现初级的数据结构,再有这些数据结构支持下,进一步练习计算的核心:算法,直到足够的练习后,才能用计算机程序实现简单的纯粹的数
2010-11-17 14:52:00
973
原创 介绍一个很酷的构建工具 : scons
介绍一个新的开源构建工具软件: scons。如果你从来没有听过或者使用过scons,可以这么理解:它是轻量级的另类make。编写scons脚本来构件项目的各个目标的过程就像编程一样“简单”
2010-09-15 16:19:00
1661
原创 多边形求面积,
这个程序很值得一博。昨天一位学地质的高中同学问我写个程序求多边形面积,因为他说看到excel就烦。正好前段时间在csdn上看到一个帖子求多边形面积,也想到了一个算法,于是写了这个程序。 算法描述: 一个多边形的面积可以由这样两个系列的梯形来计算,以凸多边形举例,在图形上方的一系列边和其在x轴的投影组成一系列梯形T1,图形下方类似的组成梯形系列T2, T1的面积 - T2的面积就
2010-01-27 19:47:00
2512
原创 迭代器,iterator的最简单实现
//#include #include #include class iter_error : public std::runtime_error {public: iter_error(const std::string &e ) : std::runtime_error(std::string("iter er
2010-01-25 18:02:00
739
原创 TcpConnect,一个socket包装类
对原始socket最重要的一个抽象:在一个TCP连接中,涉及到3类socket,专门负责接收连接的listenner,和接收到的accepter,以及主动进行连接的connecter。各种失效的情况下,抛出 tcp_error 异常让接口更C++化,更c++化就是更人性化其实就是做一些表面文章,上代码例子:#include #include #includ
2010-01-12 15:23:00
1513
原创 字符串匹配
贴一个字符串匹配算法实现:将简化版的正则表达式 转换成 nfa,nfa 子集法,转换成 dfa利用dfa匹配输入串 因为这是嵌入式设备上提炼的一个简单需求,没有考虑周全,有以下缺点:没有完全支持正则表达式,比如字符集就有限制:不能出现正则式元字符dfa的状态数有限制,最多128个状态 #ifndef _DFA_H_#define _DHA_H_
2009-12-08 18:34:00
875
2
原创 数据结构篇
0,算法对数据结构的要求1,hash2,heap : bin-heap, binomial-heap, fibonacci-heap,3,tree : 各种奇形怪状的树 有时间写,先充实下内容。 // a binary-heap implementation#include #include using std::cout;using
2009-11-16 11:20:00
629
原创 图任务
在单源最短路径和所有对最短路径的问题中,每边(u, v)都有一权值w(u,v),如果图含有循环,且循环中所有边的权值之和小于0,那么能够到达这个循环的点,没有最短路劲,因为最短路径陷入了循环。如何检测负循环的存在很简单,可以结合在Bellman-Ford算法中,在最后对所有边(u,v),进行判断,如果d(v) >= d(u) + w(u, v),则图存在负循环。如果负循环存在,怎么找出其中最
2009-11-04 18:05:00
669
原创 动态规划算法备忘
步骤1,满足dp算法的必要条件:最优子结构2,定义递归函数, 3,自底向上计算递归函数4,从计算过程保存的信息中,构造最优解的细节很多实际问题需要从所有可能的情况中找出所需要的情况,有时这没有公式,唯一的办法是搜索、穷举,而随着问题规模扩大,单纯的穷举耗费问题规模的指数时间,对于大规模的问题,即使用计算机解决也很不可取。当问题具有最优子结构时,相同
2009-10-28 09:50:00
981
3
原创 算法的优化实现
这篇文章记录算法的C/C++实现中,应该注意的几个可以改进算法效率的地方1,提高cache利用率在中实现的快速排序算法,利用这点可以做很大的改进。void MySort::do_quick_sort(int l, int r){ if (l >= r) return; int b
2009-10-28 09:44:00
1470
原创 几个基础的排序算法
几个基础排序算法#include #include using namespace std;extern "C" {extern int rand_n(int, int);}template class MySort;template ostream & operator &);temp
2009-10-28 09:36:00
560
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人