随笔分类 - 奇技淫巧
摘要:前端时间下班临走前看到同事做尝试的一个题目:如何让两个线程交替打印整数1-100? 好几年没有写代码玩了,想了想,花了十多分钟写了个答案: 晚上回家想了想,第二天又写了个答案,利用Linux的线程优先级0-99,通过控制线程优先级来保证打印顺序,代码找不到了,这里不帖了。同事是JAVA玩家,跟我这老
阅读全文
摘要:4. 二叉查找树(BST)Technorati 标记: 二叉查找树,BST,二叉查找树合并4.1 BST数据结构定义使用C++语言,如果需要使用BST,那么不用重新造轮子了,C++语言里的map, set等STL容器应该可以满足需求了(虽然STL里这些容器大多是以红黑树作为其底层实现),如果你需要使用小/大根堆(也叫优先队列,特殊的、自平衡的BST),STL也能满足你的需求(可以参考这里:http://www.cnblogs.com/dskit/archive/2009/12/13/1623152.html)。先来看下BST的定义,BST是满足如下3个条件的二叉树:1. 节点的左子树包含的节点
阅读全文
摘要:1. 打靶问题的递归解法Technorati 标记: 递归算法,字典法,二分法,打靶问题,日期问题,求幂,多项式求值伦敦奥运会火热进行中,让我们来看个打靶的问题:一个射击运动员打靶,靶一共有10环,求连开10枪打中90环的可能行有多少种?分析:这是一个典型递归求解问题。假设第10枪打x环,则将问题转换为剩下9枪打90-x环的可能有多少种,x的取值范围为[0, 10],根据加法原理,则:10枪打90环的可能 = 第10枪打0环,剩下9枪打90环的可能 + 第10枪打1环,剩下9枪打89环的可能 + 第10枪打2环,剩下9枪打88环的可能 + 第10枪打3环,剩下9枪打87环的可能 + 第10枪打
阅读全文
摘要:归并排序算法就不多说了。时间复杂度及最坏情况下的时间复杂度为O(NlogN), 空间复杂度为O(N).存在问题:1. 附加内存2. 数据拷贝到临时数组,然后拷贝回来的操作放慢了排序的速度。因此,对于内存排序,一般用快速排序。上归并排序的代码:隐藏行号 复制代码 ? 归并排序#include<stdio.h>#include<stdlib.h>typedef int ElementType; void Merge(ElementType A[], ElementType TmpArray[], int Lpos, int Rpos, int RightEnd){ int
阅读全文
浙公网安备 33010602011771号