随笔分类 - 数据结构与算法
摘要: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
阅读全文
摘要:C++中堆的应用:make_heap, pop_heap, push_heap, sort_heap, priority_queuemake_heap, pop_heap, push_heap, sort_heap都是标准算法库里的模板函数,用于将存储在vector/deque 中的元素进行堆操作,对不愿自己写数据结构堆的C++选手来说,这几个算法函数很有用,下面是这几个函数操作vector中元素的例子。详细解释可以参见: http://www.cplusplus.com/reference/algorithm/push_heap/隐藏行号 复制代码 ? Demo#include<ios
阅读全文
浙公网安备 33010602011771号