您的位置:首页 > 理论基础 > 数据结构算法

嵌入式软件开发培训笔记——C高级 数据结构与算法基础

2015-04-16 13:03 465 查看




一)、数据结构

1、逻辑结构

(1)线性结构:线性表、栈、队列
(2)非线性结构:树、图
2、基本逻辑运算:最基本的逻辑操作,如:查询、插入、删除、修改等
3、存储结构(1)顺序存储(2)链接存储(3)索引存储(4)散列存储

二)、算法(根据以下分类进行分析)
1、算法的特性:有穷性(算法执行的步骤或规则是有限的)、确定性(每个计算步骤无二义性)、可行性(每个计算步骤能够在有限的时间内完成)、输入(算法有一个或多个外部输入)、输出(算法有一个或多个输出)
算法与程序即有联系又有区别。
这里要说明的是,算法与程序既有联系又有区别。二者都是为完成某个任务,或解决某个问题而编制的规则(或语句)的有序集合,这是它们的共同点。
区别在于:其一,算法与计算机无关,但程序依赖于具体的计算机语言。其二,算法必须是有穷尽的,但程序可能是无穷尽的。其三,算法可忽略一些语法细节问题,重点放在解决问题的思路上,但程序必须严格遵循相应语言工具的语法。算法转换成程序后才能在计算机上运行。另外,在设计算法时,一定要考虑它的确定性,即算法的每个步骤都是无二义性的(即一条规则不能有两种以上的解释)
2、算法分析:解决一个问题有多种不同的算法,在算法正确的前提下,评价算法好坏的方法。
(1)时间复杂度T(N)
看消耗时间的多少。以执行步骤作为衡量的标准更客观独立。算法的执行步骤多少和处理的数据规模(n)有密切的关系,记为T(N)。评估算法的好坏,核心是比较不同算法在相同规模输入变化下的执行步骤的变化趋势孰快孰慢。如果两个算法的这种变化趋势相同则我们称它们是同数量级的,数学上记为T1(n)=T2(n)=o(f(n))。



(2)空间复杂度D(N)
看消耗存储空间的多少。
(3)看算法的设计是否容易理解,是否容易编程实现,方便调试和维护。
3、定义:算法是一个有穷规则(或语句、指令)的有序集合。



顺序查找:ASL = O(n)

拆半/二分查找:ASL = O(log2(n+1))

SVN、 GIT、ClearCase代码管理工具

课后作业:二分法查找结合seqlist

哈希查找(Hash)





排序:
直接插入法排序





折半插入法





冒泡法(交换):



快速排序(交换):代码实现1





快速排序(交换):代码实现2

递归算法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐