算法
胡椒爸爸
嗜睡懒做
动脑不动手
展开
-
binary search的积累
最近重新开始看算法,读着牛人的老师的书,收获颇多。二分搜索一直没有去注意太多,认为实现起来很简单。其实不然,其中却有很多足以细细品味斟酌之处。尝试着写了一下,针对有相同元素的,能找到第一个和最后一个。 int binary_search_first(int t, int * x, size_t begin, size_t end){ size_t l = begin原创 2009-08-04 22:29:00 · 290 阅读 · 0 评论 -
quick sort
今天尝试写了一下快速排序。在排序算法中,快排应该算是被用得比较多的了。快排的算法很简单,在平均情况下是O(NlgN),在最坏情况下则会可能是O(N*N),这些概念都被很多书写得烂了。因此,对于快排的改进主要在于尽量消除最坏情况的出现上。 /** /brief quick sort function */ template extern vo原创 2009-08-06 22:10:00 · 257 阅读 · 0 评论 -
heap sort
最近也是纯当练手。。。。又再写写堆排序。。。。多数书中总是把堆排序和优先队列放在一起讲。。。。在Robert Sedgewick的书中说了。。。除了联接操作。。。。基于数组存储的堆在多种操作中的综合效率还是很不错的。。。。当然。。。还有一些数据结构能使联接操作的效率也靠近最优。。。。这个以后再补上吧。。。。 template void make_heap(T原创 2009-08-13 21:54:00 · 269 阅读 · 0 评论 -
kmp
出差期间,闲着无事,写了一个kmp的实现。事实上还真的从来没有写过kmp的实现,又想起当年去啥都不懂的时候去笔试kingsoft,最后一道就是写一个kmp的实现。想想时间过得也够快的了。。。。不多唠叨。。。贴上代码。。。。const char * cmp_test(const char * l_str, const char * pattern){ assert(l_原创 2009-12-08 14:02:00 · 242 阅读 · 0 评论