数据结构与算法

0数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。(程序设计=数据结构+算法)

数据结构分为逻辑结构(集合结构,线性结构,树形结构,图形结构)和物理结构(数据元素的存储结构形式有两种:顺序存储和链式存储。

算法:是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作,算法的特性(输入,输出,有穷性,确定性,可行性)

算法设计的要求:正确性(算法程序没有语法错误,算法程序对于合法输入能够产生满足要求的输出,算法程序对于非法输入能够产生满足规格的说明,算法程序对于故意刁难的测试输入都有满足要求输出结果。)可读性(为了便于阅读,理解和交流)时间效率高和存储量低

算法效率的度量方法,(我们在分析一个算法的运行时间时,重要的是把基本操作的数量和输入模式关联起来

算法时间复杂度:执行次数==时间,只看最高项的系数,可以忽略其常数和与它相乘的数(3n的3次方加3n加一记为n的三次方,单个循环是线性阶,嵌套循环是平方阶

循环的时间复杂度等于循环体的复杂度乘以该循环运行的次数。

函数调用的时间复杂度分析。常用的时间复杂度所耗费的时间从小到大依次是0(1)<0(logn)<(n)<0(nlogn)<0(n的平方)<0(n的三次方)<0(2的n次方)<0(n!)<0(n的n次方)

用时间复杂度来指运行时间的需求,用空间复杂度指空间需求。当让我们求复杂度时一般是指时间复杂度

线性表的定义(由;零个或多个数据元素组成的有限序列。有且仅有一个前驱元素和后继元素一对一)

抽象数据类型ADT(数据类型,是指一组性质相同的值的集合及定义在此集合上的总称,抽象:是指抽取出食物具有的可比性的本质,它要求抽出问题的特性而忽略非本质的细节,是对具体事物的一个概括,抽象是一种思考问题的方式,它隐藏了繁杂的细节,抽象数据类型的定义仅取决与它的一组逻辑特性,而与其在计算机内部如何表示和实现无关,

单链表结构与顺序存储结构的优缺点。

存储分配方式:顺序存储结构用一段连续的存储单元依次存储线性表的数据元素,单链表采取链式存储结构,用一组任意的存储单元存放线性表的元素,

时间性能:查找(顺序存储结构0(1),单链表0(n),插入和删除顺序存储结构需要平均移动表长一半的元素,时间为0(n),单链表在计算出某位置的指针后,插入和删除的时间仅为0(1)

空间性能:顺序存储结构需要预分配存储空间,分大了容易造成空间浪费,分小了容易发生溢出,单链表不需要分配存储空间,只要有就可以分配,元素个数也不受限制

综上所述:若线性表需要频繁查找,很少进行插入和删除操作时,宜采用顺序存储结构,若需要频繁插入和删除时,采用单链表结构,

静态链表:用数组描述出来的链表,1,把数组的第一个和最后一个元素做特殊处理,他们的date不存放数据,2,通常把未使用的数组元素称为备用链表,3,数组的第一个元素,即下表为0的那个元素的cur就存放备用链表的第一个结点的下标,4,数组的最后一个元素,即下标为MAXSIZE-1的cur则存放第一个有数值的元素的下标,相当于单链表中的头结点作用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值