数据结构学习
重新开始的勇气
这个作者很懒,什么都没留下…
展开
-
尾递归
如果一个函数中所有递归形式的调用都出现在函数的末尾,我们称这个递归函数是尾递归的。当递归调用是整个函数体中最后执行的语句且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归。尾递归函数的特点是在回归过程中不用做任何操作,这个特性很重要,因为大多数现代的编译器会利用这种特点自动生成优化的代码。 中文名尾递归检测到时它就覆盖当前的活动记录而不是在栈中去创建一个新的编译器可以做到这原理编辑当编译器...转载 2018-03-13 10:46:58 · 108 阅读 · 0 评论 -
几种排序方法
排序方法 平均 最好 最坏 辅助空间 稳定性 冒泡 O(n2) O(n) O(n2) O(1) 稳定 简单选择 O(n2) O(n2) O(n2) O(1) 稳定 插入 O(n2) O(n) O(n2) O(1) 稳定 希尔 O(nlogn)~O(n2) O(n1.3) O(n2) O(1) 不稳定 堆排序 O(nlogn) O(nlogn) ...转载 2018-04-02 17:06:11 · 162 阅读 · 0 评论 -
map
#include <map> #include <string> #include <iostream> using namespace std; int main() { map<int, string> mapStudent; mapStudent.insert(pair<int, ...转载 2018-04-02 20:48:59 · 99 阅读 · 0 评论 -
最优二叉搜索树(动态规划)
最优二叉搜索树 假定设定一个程序,实现英语文本到法语的翻译。对英语文本中出现的灭个单词,我们需要查找对应的法语单词。为了实现这些查找槽,我们可以创建一棵二搜索叉树,将n个英语单词作为关键词,对应的法语单词作为关联数据。由于文本中的每个单词都要进行搜索,我们希望花费在搜索上的总时间尽量减少。 通过红黑树或其他平衡搜索树结构,我们可以假定每次搜索时间为O(lgn),但是,单词出...转载 2018-04-10 09:39:06 · 9534 阅读 · 1 评论 -
动态规划-最长公共子序列问题
最长公共子序列问题 最长公共子序列问题(longest-common-subsequence problem)给定两个序列X=<x1,x2,...,xm>和Y=<y1,y2,...,yn>,求X和Y长度最小的公共子序列(可以不连续)。接下来将展示如何用动态规划方法高效地求解LCS问题。步骤1:刻画最长公共子序列的特征 如果用暴力搜索方法求解LCS问题,就要穷举...转载 2018-04-10 15:44:02 · 466 阅读 · 0 评论 -
二叉堆学习
heap并不属于STL容器组件,它分为 max heap 和min heap,在缺省情况下,max-heap是优先队列(priority queue)的底层实现机制。而这个实现机制中的max-heap实际上是以一个vector表现的完全二叉树(complete binary tree)。二叉堆(binary heap)就是i一种完全二叉树。也即是。整棵二叉树除了最底层的叶节点以外,都是填满的,而最...转载 2018-03-28 16:26:29 · 139 阅读 · 0 评论 -
数据结构与算法(c++)——跳跃表(skip list)
https://www.cnblogs.com/learnhow/p/6749648.html今天要介绍一个这样的数据结构:>>完整代码单向链接有序保存支持添加、删除和检索操作链表的元素查询接近线性时间——跳跃表 Skip List一、普通链表对于普通链接来说,越靠前的节点检索的时间花费越低,反之则越高。而且,即使我们引入复杂算法,其检索的时间花费依然为O(n)。为了解决长链表结构的检...转载 2018-04-11 10:29:12 · 367 阅读 · 0 评论