
数据结构学习笔记
wD丶路人
稳步前进
展开
-
数据结构(C++语言版)学习笔记开工啦!!
今天开始更新数据结构算法的相关学习笔记啦!以后每天基本都会有更新的内容,希望大家能持续关注哦~原创 2019-04-27 13:36:16 · 1557 阅读 · 0 评论 -
数据结构学习笔记:无序向量常用的操作算法
向量的元素访问向量的插入算法:insert(r,e)r位置上插入一个元素e向量的区间删除算法:remove(lo,hi)删除lo到hi地址之间的所有元素向量的查找算法:find(e,lo,hi),逆向的逐个从hi向lo遍历其间所有元素,查找是否有和元素e相等的元素,最终返回的是查找到的元素的位置;如果到lo还没有找到相等的元素,则查找失败向量的单元素删除算法:remove(r)删除...原创 2019-05-04 15:06:17 · 1957 阅读 · 0 评论 -
数据结构学习笔记:向量之可扩充向量
静态空间管理以及其不足:动态空间管理:扩充算法的实现:下面来看看其他扩充的策略:1.容量递增策略:1.容量加倍策略(指数级别):递增策略和加倍策略的对比如下:可以看出加倍策略在牺牲一定量空间复杂度的代价下换取了大量时间复杂度的增益,这样是值得的平均复杂度VS分摊复杂度...原创 2019-05-04 13:48:22 · 1972 阅读 · 0 评论 -
数据结构学习笔记:向量的构造和析构
一个模板类的构造:基于复制的类模板的构造:原创 2019-05-04 12:07:48 · 1666 阅读 · 0 评论 -
数据结构学习笔记:向量之接口与实现
向量vector属于一种线性数据结构首先要清楚抽象数据类型(ADT)和数据结构的区别:而向量这种结构就属于一种抽象数据类型,简称向量ADT,是数组的进化,是一种动态数组!!下面是vector数据结构类型的一些操作接口以及这些向量接口的操作实例...原创 2019-04-28 16:11:15 · 1722 阅读 · 0 评论 -
数据结构学习笔记:关于DSC设计与优化的设计与优化---动态规划
一个好的算法需要满足三个条件:(1)算法可以正常工作(2)算法的正确性可以得以保证(3)算法要能足够快一般的递归算法确实能很好的满足前两个条件,但是或许它并不够快,甚至有些问题在递归算法下导致内存和程序的崩溃,就是因为计算的太慢了,这时我们可以用迭代算法,虽然之前讲过递归算法比迭代更有效率,但是在某些问题的情况下,迭代算法是比递归更加有效的,不容易导致崩溃!下面举个实例看一下:斐波那锲...原创 2019-04-28 15:30:40 · 1759 阅读 · 0 评论 -
数据结构学习笔记:另一种强有力的算法策略“分而治之”
之前已经讲过一种有效的算法策略减而治之数据结构学习笔记:迭代与递归之“减而治之”今天再讲另一种强有力的算法策略“分而治之”两种策略颇为类似,但又有所不同下面举一个具体的实例数组求和:二分递归从上面的例子可以看出,貌似用减而治之和分而治之的策略对于同一个问题的复杂度是一样的,很多人可能就开始疑问了,既然是一样的,那还何必发明出两种策略呢?其实不然,上面的例子只是一个很简单的例子,所以看不...原创 2019-04-28 14:50:25 · 1567 阅读 · 0 评论 -
数据结构学习笔记:迭代与递归之“减而治之”
我们刚开始学习算法的时候,通常都用笨重的迭代方法去求解,但是一般的迭代算法效率很低,因此出现了递归这样效率更高更巧妙的方法。下面我们举个例子来看我们可以从代码里看出,整个问题的规模不断在减少,最后直到退出循环体,这就是减而治之的方法体现接下来举一个减而治之的递归算法的例子,以及分析递归算法复杂度的方法数组求和:线性递归我们再来看另一个典型应用的递归实例数组倒置:...原创 2019-04-28 14:25:48 · 1535 阅读 · 0 评论 -
数据结构学习笔记:封底估算
之前介绍的大O记号法模糊定性地去估算一个算法的复杂度之外数据结构学习笔记:算法复杂度的度量之“大O记号”还有一种可以精细定量地估计算法复杂度的方法之一就是封底估算!!这种估算几乎不需要比较,只需要用头脑去抓住问题的主要方面尽快的得出一个问题的足够近似的估计拿下面简单的例子来说明,同一个算法在不同硬件机器上的复杂度的封底的时间估计和不同的算法在同一硬件上的时间。...原创 2019-04-27 17:46:33 · 2507 阅读 · 0 评论 -
数据结构学习笔记:冒泡排序复杂度分析
通过冒泡排序来验证一个算法是有效的,什么情况下该算法必然会结束?至少需要迭代多少趟?原创 2019-04-27 17:15:48 · 1527 阅读 · 0 评论 -
数据结构学习笔记:算法复杂度的分析
为了理解算法复杂度的分析,首先讲一下级数方面的知识和归纳接下来看一下循环操作中的级数!原创 2019-04-27 16:31:03 · 1530 阅读 · 0 评论 -
数据结构学习笔记:算法复杂度的度量之“大O记号”
分析算法复杂度的非常重要的方法:大O记号!!下面来让我们看一下到底什么是大O记号举个例子:用一个直尺去评价算法复杂度,上面的刻度就相当于大O记号,我们不一定要一味的强调刻度的精细程度,没有必要。能大致反映出算法的复杂度即可T(n)是一个相对比较精细复杂的函数,通过对其进行简化,成为一个近似表达T(n)的函数f(n),f(n)是T(n)的一个上界函数,粗略的表示了T(n),如下所示。O(f(...原创 2019-04-27 15:52:44 · 3192 阅读 · 0 评论 -
数据结构学习笔记:图灵机(TM)和RAM
TM和RAM是一种独立的具体的平台,具有无限的内存,对算法效率的评判比较可信原创 2019-04-27 14:39:25 · 3395 阅读 · 0 评论 -
数据结构学习笔记:1.1计算机与计算
(a)计算对象:计算的规律和技巧目标:实现高效低耗的计算1.什么是计算机和计算2.到底什么是一个好的算法呢?效率才是一个好算法的关键!!!数据结构+算法=计算3.算法分析的两个方面问题规模VS计算成本...原创 2019-04-27 14:27:41 · 1435 阅读 · 0 评论 -
数据结构学习笔记:有序向量的唯一化(去重复)操作
有序性及其甄别有序向量的唯一化(去重复)操作int nuiquify()(低效率版)我们来分析一下上述低效算法的复杂度接下来学习一下高效率的有序向量的唯一化(去重复)操作!!!...原创 2019-05-04 15:30:25 · 1978 阅读 · 0 评论