自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 算法导论学习笔记15_最小生成树

最小生成树MST1. 最小生成树(MST)2. 贪心选择性质3. Kruskal算法4. Prim 算法5. 附录(代码)5.1 Kruskal 算法代码5.2 Prim 算法代码1. 最小生成树(MST)定义:图G=(E,V)G=(E, V)G=(E,V)的生成树是包含其所有结点的无环连通子图,有权图的最小生成树是其权值之和最小生成树。下图展示了有权图的最小生成树:其中,加粗的边和所...

2019-04-26 22:03:06 558

原创 算法导论学习笔记14_基本图算法

基本图算法1. 图的表示1.1 邻接链表1. 图的表示对于一个图G=(V,E)G=(V, E)G=(V,E),通常由两种表示方法:邻接链表和邻接矩阵。对于稀疏图(边的条数∣E∣|E|∣E∣远远小于∣V∣2|V|^2∣V∣2的图),通常用邻接链表表示,而对于稠密图(∣E∣|E|∣E∣接近∣V∣2|V|^2∣V∣2),通常采用邻接矩阵的形式表示。1.1 邻接链表对于图G=(V,E)G=(V,...

2019-04-25 15:23:51 779

原创 算法导论学习笔记13_贪心算法

贪心算法1. 贪心算法定义及性质2. 实例1:活动选择问题3. 实例2:霍夫曼编码4. 附录(代码)4.1 活动选择代码4.2 霍夫曼编码代码1. 贪心算法定义及性质贪心算法(Greedy Method),又称为“贪婪算法”。是一种在每一步选择中都采取在当前状态下最好或最优的选择,从而导致结果是最好或最优的算法。贪心算法的两个要素是:最优子结构、贪心选择性质。最优子结构:如果一个问题的最...

2019-04-15 22:38:31 429

原创 算法导论学习笔记12_动态规划

动态规划1. 动态规划的定义1. 动态规划的定义动态规划(英语:Dynamic Programming,简称DP)常用于求解最优化问题。它与分治法相似,都是通过组合子问题的解来求解原问题。分治法(Divide and Conquer)将问题划分为互不相交的子问题,递归地求解子问题,再将它们的解组合起来,求出原问题的解。动态规划用于子问题重叠的情况,而子问题重叠的含义是不同的子问题有公共的子...

2019-04-10 15:29:46 473

原创 算法导论学习笔记11_红黑树

红黑树

2019-04-07 15:23:36 205

原创 算法导论学习笔记10_二叉搜索树

二叉搜索树1. 二叉搜索树的定义及特点2. 二叉搜索树的建立及基本操作2.1 插入2.2 建树2.3 遍历2.4 查找2.5 删除3. 附录(代码)1. 二叉搜索树的定义及特点二叉搜索树(英语:Binary Search Tree),也称二叉查找树、有序二叉树、排序二叉树。它具有如下性质:若任意结点的左子树不为空,则左子树上所有结点的值均小于其根节点上的值。若任意结点的右子树不为空,则...

2019-04-06 17:39:04 354

原创 算法导论学习笔记9_散列表

散列表1. 散列表1. 散列表散列表(Hash Table,又称哈希表)是一种根据关键字直接访问内存存储位置的数据结构。在链表或者有根树等结构中,如果我们知道一个对象的关键字(key),我们需要与链表或者树中对象的关键字进行逐一比较,从而找到该对象的位置。散列表则不同,它通过将对象的关键字映射为一个地址,将该地址作为对象的存储地址,从而在查找对象时不需要进行关键字的比较。假设所有关键字在...

2019-04-05 20:41:37 618

原创 算法导论学习笔记8_基本数据结构

基本数据结构1. 栈和队列4.附录4.1 栈代码4.2 队列代码1. 栈和队列栈和队列是两个基本的动态集合,其中栈遵循后进先出(LIFO)的原则,队列遵循先进先出(FIFO)的原则。下图展示了元素入栈出栈的过程:下列是与栈有关的操作:stack.push() 将元素压入栈中stack.pop() 将栈顶元素弹出stack.empty() 判断栈是否为空stack.top()...

2019-04-04 11:27:46 178

原创 算法导论学习笔记7_中位数和顺序统计量

中位数和顺序统计量1. 最大最小值2. 线性时间的选择算法3. 附录3.1 最大最小值代码3.2 快速选择代码1. 最大最小值在一个nnn个元素的集合中,至少需要做n−1n-1n−1次比较才能确定其最小元素或最大元素。下面的伪代码给出了最朴素的一种方式:MINMUM(A) min = A[1] for i = 2 to A.length if min > A[i] mi...

2019-04-03 17:47:17 329

原创 算法导论学习笔记6_线性时间排序

线性时间排序    \space\space\space\space    在常见的排序算法中,插入排序的最坏情况运行时间为Θ(n2)\Theta(n^2)Θ(n2);快速排序的最坏情况运行时间虽然也为Θ(n2)\Theta(n^2)Θ(n2),但其在平均情况下的运行时间为Θ(nlg⁡n)\Theta(n\lg ...

2019-04-03 11:28:31 385

原创 算法导论学习笔记5_快速排序

快速排序1. 快速排序1. 快速排序快速排序是一种最坏情况时间复杂度为Θ(n2)\Theta(n^2)Θ(n2)的排序算法,虽然最坏情况时间复杂度很差,但是它的平均性能非常好,其期望时间复杂度为Θ(nlg⁡n)\Theta(n\lg n)Θ(nlgn),而且Θ(nlg⁡n)\Theta(n\lg n)Θ(nlgn)中隐含的常数因此非常小。此外,快速排序是一种原址排序算法。与归并排序相同,...

2019-04-01 20:31:35 243

原创 算法导论学习笔记4_堆排序与优先队列

目录1. 堆的定义及性质2. 堆排序3. 优先队列1. 堆的定义及性质堆和栈是计算机科学中两种常见的数据结构,另外堆区和栈区是C++中内存分配的两个区域,需要注意它们与堆、栈两种数据结构之间的区别。二叉堆通常分为两种形式:最大堆和最小堆。在这两种堆中,结点的值要满足堆的性质(以最大堆为例):除根节点以外的所有节点iii都要满足:A[PARENT(i)]≥A[i]A[PARENT(i)]\...

2019-04-01 17:04:46 219

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除