![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法分析
快上车_来不及解释了
职业挨踢人
展开
-
尾递归总结
1.普通递归 也称线性递归,在递归过程中会为每一层的调用在栈中开辟空间用于存储返回点和变量。所以递归次数过多容易造成栈的溢出。 2.尾递归 顾名思义,在函数尾部调用自身,并且不需要为返回点开辟新的栈空间,但往往需要将当层的计算结果作为参数传递到下一层的调用中去。所以需要为参数开辟额外但恒量的空间。不需要传递当层计算结果的尾递归调用习惯是极为不好的。 二者区别:...原创 2017-04-08 16:16:16 · 1029 阅读 · 0 评论 -
数据结构与算法分析之AVL平衡树
AVL树定义: AVL(Adelson-Velskii和Landis)树是带有平衡条件的二叉查找树。平衡条件是:其每个节点的左子树和右子树的高度差最多等于1的二叉查找树。AVL ADT操作:Find操作:AVL树的查找操作跟非AVL二叉查找树的查找是一样的,查找最小值沿左子树寻找,查找最大值沿右子树查找Insert操作:AVL树的插入操作除了新建节点原创 2017-04-14 16:58:38 · 1066 阅读 · 0 评论 -
数据结构与算法分析之伸展树(splaytree)
1.伸展树,它保证从空树开始任意连续M次对树的操作最多花费O(MlogN)的时间。2.伸展树的基本思想是,当一个节点a被访问后,通过一系列的AVL树的旋转将a移动到根节点上,这样下次访问时会被快速击中只需要O(1)的时间。通常一个节点被访问时,它就很可能不久再次被访问。3.构造伸展树的一个简单方法是从下向上进行单旋转,也就是将访问路径上的每个节点和他们的父节点都实施旋转原创 2017-04-15 18:05:18 · 6553 阅读 · 0 评论 -
数据结构与算法分析之树的概念总结
1.二叉查找树的大部分操作运行时间平均为O(logN)2.树是N个节点和N-1条边的集合,其中一个节点叫做根。存在N -1条边的结论由下面的事实得出:每条边都将某个节点连接到它的父亲,除根节点以外每个节点都有一个父亲3.没有儿子的节点称为树叶4.路径定义:从节点n1到nk的路径定义为节点n1,n2,...nk的一个序列,使得对于1ni是n(i+1)的父亲原创 2017-04-12 19:29:15 · 971 阅读 · 0 评论 -
数据结构与算法分析之散列概念总结
1.散列是一种用于以常数平均时间执行插入,删除和查找的技术。但是,那些需要元素间任何排序信息的操作将不会得到有效的支持。2.散列函数每个关键字被映射到从0到TableSize - 1范围内的某个数,并且被放到适当的单元中。这个映射就叫做散列函数。好的散列函数应该是关键字均匀的分配到表中。3.散列函数的选择a.如果关键字是整数,一般做法是返回key mod T原创 2017-04-22 17:54:12 · 1121 阅读 · 0 评论 -
数据结构与算法分析之优先队列(堆)
1.优先队列,也叫二叉堆,简称堆。2.同二叉查找树一样,堆也有两个性质,即结构性和堆序性。3.堆的结构性质堆是一棵被完全填满的二叉树,有可能的例外在底层,底层上的元素从左到右填入。这样的树称为完全二叉树(complete binary tree)。4.一棵高度为h的完全二叉树有2^h到2^(h+1) - 1个节点5.由于完全二叉树的规律性,它可以原创 2017-05-15 15:26:39 · 1629 阅读 · 0 评论 -
数据结构与算法分析之排序算法总结
十大常用排序算法总结1.冒泡排序2.选择排序3.插入排序4.希尔排序5.堆排序6.归并排序7.快速排序8.计数排序9.桶排序10.基数排序原创 2017-06-24 16:09:39 · 1296 阅读 · 0 评论