![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
我与编程有个约定
这个作者很懒,什么都没留下…
展开
-
MIT:算法导论——1.算法分析——插入排序 vs 二路归并排序
#if 0 Input:5 2 4 7 1 3 2 6 #endif #if 1 #include #include #include #include #include using namespace std; template int insertionSort( T* data, int n ); template原创 2014-06-05 10:16:25 · 634 阅读 · 0 评论 -
MIT:算法导论——11.扩充的数据结构、动态有序统计和区间树
算法导论第14章 【数据结构的扩张】 为应对新的应用需求,经常是通过存储额外信息的方法来扩张一种标准的数据结构,然后对这种数据结构,编写新的操作来支持所需要的应用。一、动态顺序统计一种支持一般动态集合上,顺序统计操作的数据结构。通过这种数据结构,可以快速地找到一个集合中的第i小的数,(select)或给出一个指定元素在集合的全序中的位置。(rank)【已知原创 2014-06-19 11:20:40 · 1472 阅读 · 0 评论 -
MIT:算法导论——2.渐近符号、递归及解法_和连续子数组的最大和、主方法/主定理求时间复杂度
#if 0三种求解递归式的方法,即算法的O渐近界的方法:(1)代入法:猜测一个界,然后用 数学归纳法证明 这个界正确。(2)递归树法:将递归式转换为一棵递归树。其结点表示不同层次的递归调用产生的代价。然后用边界和技术 求解递归式。(3)主方法:可求解 形如下面公式的递归式的界——T(n) = aT(n/b) + f(n)。其中a>=1, b>1,f(n)是一个给定的函数。原创 2014-06-03 17:30:06 · 1207 阅读 · 0 评论 -
MIT:算法导论——10.平衡搜索树-红黑树
【红黑树】是一棵二叉搜索树,它在每个结点上增加了一个存储位来表示结点的【颜色】,可以是RED或BLACK。红黑树保证没有一条路径会比其他路径长出2倍,因而是近似【平衡】的。【树中结点的5个属性】color、key、left、right和p。一棵红黑树满是足下面【红黑性质】的二叉搜索树:(1)每个结点是红色或是黑色。(2)根结点和每个叶节点(NIL)是黑色的。(3)每个红色结原创 2014-06-15 11:45:09 · 776 阅读 · 0 评论 -
MIT:算法导论——7.1.基本数据结构_栈、队列、链表、有根树
【教材:第10章 基本数据结构】(1)栈——后进先出说明:采用一个数组S[1...n]来实现一个最多容纳n个元素的栈。 S.top=0时,栈不包含任何元素,栈空。下溢,上溢:S.top超过n。栈的几种操作:STACK-EMPTY( S ) if S.top == 0 return true else return falsePUSH( S, x )// 数组尾部,原创 2014-06-12 10:30:00 · 1444 阅读 · 0 评论 -
MIT:算法导论——7.2.二叉树
====================博客补充====================================================原创 2014-06-12 10:51:19 · 705 阅读 · 0 评论 -
MIT:算法导论——9.二叉搜索树
====================博客补充====================================================原创 2014-06-12 10:57:12 · 798 阅读 · 0 评论 -
MIT:算法导论——8.散列表
========================================================================摘要: 本章介绍了散列表(hash table)的概念、散列函数的设计及散列冲突的处理。散列表类似与字典的目录,查找的元素都有一个key与之对应,在实践当中,散列技术的效率是很高的,合理的设计散函数和冲突处理方法,可以使得在散列表中查原创 2014-06-12 10:47:39 · 737 阅读 · 1 评论 -
MIT:算法导论——6.中位数和顺序统计量:随机快排应用==>随机选择
sss原创 2014-06-09 11:10:03 · 812 阅读 · 0 评论 -
MIT:算法导论——4.2快速排序 以及 排序算法时间复杂度分析
#if 0【本课例子】(1)快速排序:分割算法(2)随机算法#endif#if 1#include #include using namespace std;struct LOC{int low;int high;LOC& operator=( LOC& rhs ){this->low = rhs.low;this->原创 2014-06-05 10:34:45 · 667 阅读 · 0 评论 -
MIT:算法导论——5.线性时间排序:计数排序、基数排序以及桶排序
注:教材《算法导论》原创 2014-06-07 00:24:09 · 710 阅读 · 1 评论 -
MIT:算法导论——4.1.排序和顺序统计量_堆排序
#if 1#include using namespace std;#define PARENT( i ) ( i >> 1 )#define LEFT( i ) ( i << 1 )#define RIGHT( i ) ( i << 1 + 1)//(1)MAX-HEAPIFY过程:其时间复杂度为O(lgn),它是维护最大堆性质的关键。templatevoid max原创 2014-06-05 21:16:39 · 619 阅读 · 0 评论 -
MIT:算法导论——3.分治法实例_二分查找 和求a^b
#if 0基本的知识在上一节有介绍。本节补充:分治法: (1)“分” (2)“治” (3)“合并”线性时间(linear time):一个元素用一个时间,n个元素用n个时间。递归中,如果自上而下有重复,那么可以采用自下而上计算。即正向迭代。数学归纳法来证明:Induction Fib数列可以用矩阵乘法来实现。超大规模集成电路:VLSI(very large scal原创 2014-06-05 10:20:33 · 663 阅读 · 0 评论 -
MIT:算法导论——15.动态规划
【设计一个动态规划算法的四个步骤】1、刻画一个最优解的特征。2、递归地定义最优解的值。3、计算最优解的值,通常采用自底向上方法。4、利用计算出的信息构造一个最优解。【最优子结构(optimal substructure)】问题的最优解由相关子问题的最优解组合而成,而这些子问题可以独立求解。【动态规划两种等价实现方法】1、 带备忘的自顶向下法(top-down原创 2014-08-30 14:00:55 · 1279 阅读 · 1 评论