ADT和算法

本文探讨了抽象数据类型(ADT)的概念,强调其数学特性和接口一致性。算法的正确性和可读性至关重要,注释和清晰的变量名有助于提高代码可读性。此外,介绍了算法性能分析,包括时间复杂度和空间复杂度,并列举了常见时间复杂度级别。最后,提到了影响算法运行时间的因素,如硬件速度、编程语言和问题规模。
摘要由CSDN通过智能技术生成

数据结构实在给我难住了,把队列栈啥的都用代码实现一遍实在没有啥意义啊.

其他描述也真心太无力了.都想直接跨过上QT算了,然后找到本书大概看了下还算可以,就按照书来把.

抽象数据类型(ADT)

他是一个数学模型,例如整型(int)的ADT就是加减乘除取模,无论在何种机器下,他的数学特性相同.

而抽象意义就在于将数据类型抽象为数学特性,使用户不必关心内在实现方法.

例如堆栈等的增删查改,就可以使用ATD抽象出去,无论什么形式实现,提供的接口可以是一样的.

算法定义的描述

算法可以使用自然语言描述,也就是伪代码.

也可以使用流程图,N-S图等描述工具.特点简介明了.

当然还有直接用计算机语言来描述,不过这种即使有注释也是神难看懂.

算法

正确性和可读性.

正确性不必多说,可读性需要便于人们阅读,交流调试.同样晦涩难懂的算法也易于隐藏错误.难以调试.

注释这点很重要,没有注释的代码就是天书.

还有变量名,需要见名知意.

不同目的的语句之间插入一个空白行.

排除非法输入,例如排序时数据为空,元素个数为1时.

最后才是算法的时空复杂度,算法使用次数少,追求程序的可读性.算法使用次数多,追求时间效率.数据量大,内存小应追求空间效率.

算法性能分析

用时间复杂度和空间复杂度评鉴算法优劣

运行时间主要因素

一,硬件的速度.

二,程序语言,一般语言级别越高,效率反而越低.

三,编译程序生成的目标代码质量,代码优化越好,程序生成质量越高.

四,问题的规模.

算法时间复杂度是指算法运行到结束的时间,这个时间就是算法中每条语句执行时间之和.每条语句的执行时间是该语句执行次数与所需要时间的乘积.但是当算法转化为程序之后,语句会根据机器性能,生成代码质量有关.所以无法确定.

常见时间复杂度

按照升序:常数阶O(1) < 对数阶O(log2n) < 线性阶O(n) < 平方阶O(n^2) < 指数阶O(2^n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值