绪论基础概念及时间空间复杂度相关
加油!给正在学习的你~
一、内容要点
(一)什么是数据结构
1.用计算机解决问题需要几个步骤:
2.问题的类型
3.数据结构的定义
(二)基本概念和术语
1.数据:
2.数据的逻辑结构:
辅助理解:(已理解的跳过)我们可以从生活中的一些物与物之间的逻辑关系更好地理解上面的数据逻辑结构。线性结构比如火车车厢的关系、或者一群小孩子拉着手围成圈做游戏,每一个个体都只有两只手去拉别人,在离散数学图论中,可以将它们看作每个节点最多有且只能有一个入度和一个出度;树形结构,比如我们中学历史课本上的附庸关系、工作中的严格上下级关系等,每个人只有一个直系长官,每个长官下面可以有多个下属,每个节点能有一个入度和多个出度;网状结构,比如开party818数据结构 数据结构基础概念汇总,所有人随机和别人谈话,节点的入初度不严格规定818数据结构,每个节点可以有多个入度和多个出度。
3.数据的存储结构:
4.数据的运算
数据的运算是在数据的逻辑结构定义的操作算法,如检索、插入、删除、更新和排序等。
5.数据的类型
6.数据的操作
更希望能在浏览的过程中,读者自己也能回忆,不停思考一个问题:“我能用几种算法完成以上操作,还有没有更优解?“博主在写代码的时候,只要ddl允许,会一直不停地去完善自己的算法和代码818数据结构,怎样会更有序整洁些、怎样命名和注释别人看我的代码时会有一种赏心悦目的感觉、怎样优化下去耗时耗空间最小、怎样添加一些新奇有趣的小功能...心无旁骛地沉在里面,不要去纠结一些浅薄浮躁的声音。
(三)算法和算法分析
1.算法
2.算法效率的度量
二、重难点
三、典例
例1:设有数据结构line = (D,R),其中
D={01,02,03,04,05,06,07,08,09,10},R={r},
r={,,,,,,,,}
例2:设n为整数,指出下列各算法的时间复杂度。
- :
void prime(int n){
int i =2;
while((n%i)!=0 && i*0.1sqrt(n))
printf("%d是一个素数\n",n);
else
printf("%d不是一个素数\n",n);
- :
<p><pre>void sum1(int n){
int p=1,sum=0,i;
for(i=1;i