数据结构笔记

数据结构定义:与算法有关,与数据规模有关。从找书入手,如何在书架上摆放图书。不是随便放的话,二分查找。但是如何插入新书呢,这样移动大部分的书也很麻烦。再来看书店如何放书,每块区域内放某种类别的图书。一开始给书架呢,给多了,给小了,都不太好,然后类别是分的多细好呢。说明的是,解决问题方法的效率是和数据组织方式直接相关的。

关于空间使用:输出1~N的全部正整数,循环实现或者递归实现,观察效率。循环实现N=10,1000,10000都可以,100000有点慢,而递归实现,100000很多时候递归的代码简洁,但是对空间的占用可能会很恐怖的。

计算多项式的值:循环做是会被鄙视的,秦九韶算法,谁快谁慢可以测一下,clock()函数从程序开始到被调用的时间,单位是clock tick,时钟打点。CLK_TCK常数,clock_t为clock的返回值。运行时间太快了,可能不到一个tick,让被测函数重复运行足够多次。同样一个程序跑出来具体数字可以不一样,相对大小应该差一个数量级。效率与算法的巧妙程度也有关系。

什么是数据结构呢?组织方式,数据对象与操作有关,操作称为算法。线性结构,一个一个对应,另外一对多的叫做树。多对多的为图。逻辑结构和物理存储结构,逻辑结构为前面讲的,物理存储结构,数组呢,还是链表呢。ADT抽象数据结构:数据类型,数据对象集,数据集合相关联的操作表。抽象不依赖于具体实现。矩阵的抽象数据类型定义。

算法的定义:algorithm,一个有限指令集,接受一些输入,产生输入。在一定有限步骤之后要终止,每一条指令要有充分明确,可行,不依赖于具体语言来实现。选择排序,选择最小的贴有序部分后面,swap可以用宏。

什么是好的算法:空间复杂度,时间复杂度两个因素。与数据规模有关。在分析效率的时候,机器运算加减比乘除快很多,可忽略加减。算法复杂度略。算法复杂度是n*n,要想到改为n*logn.复杂度分析小窍门,相加最大,相乘即可原值。if条件,else两部分,总共三部分取最大。

应用实例:子列连续和最大。分而治之:把一个比较复杂的问题分成几块儿,在线处理算法。效率高,一般有副作用,正确性不是那么理解。一旦发现和为负,就抛弃。及时处理数据,在线处理。

NA 是not available。跑不动了。

线性表的实现:一元多项式运算。顺序存储结构直接表示,用数组来表示,操作方便。顺序结构表示非0项:有没有可能只表示非零项,可结构数组表示,空间节省,运算呢?按指数大小有序存储,如何运算?还可以用链表结构存储非0项,

线性表及顺序存储:同一个问题可以有不同的表示方法,有一类共性问题,有序线性序列组织和管理。略一波~

https://www.cnblogs.com/COLIN-LIGHTNING/p/8436624.html前缀和的浅谈

https://www.cnblogs.com/COLIN-LIGHTNING/p/8436624.html差分数组

模版https://blog.youkuaiyun.com/usher_ou/article/details/57403403

大数模拟https://blog.youkuaiyun.com/charles1e/article/details/62891228

substr 用法https://baike.baidu.com/item/substr/2171

数位dp https://blog.youkuaiyun.com/zhangxian___/article/details/75304335

http://www.cnblogs.com/zbtrs/p/6106783.html

biginteger(Java)https://blog.youkuaiyun.com/pql925/article/details/70027058

string::npos

https://blog.youkuaiyun.com/jiejinquanil/article/details/51789682

待续

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值