数据结构与算法知识点整理(一)数据结构概述

数据结构概述

1.数据结构的研究内容:研究的是数据之间的彼此抽象的关系,不涉及具体的数据内容。

2.基本数据结构分为:线性表、树和图。

3.数据结构分为逻辑结构和物理结构。逻辑结构是抽象出来的理论模型,而物理结构是指实际存储在磁盘、内存等介质上的结构。前者是数学模型,后者是实际的。后者分为顺序存储结构和链式存储结构。

这些也没有什么太多可讲的,简单写一下概念。

ADT

抽象数据型。这是一种与具体语言无关的描述性语言。其实基本可以理解成一种混合了CC++而不严格按照语法来的一种语言。因为C是众多语言的样板,C的很多语法在大量语言中都有体现,所以适合用来作为纯粹描述数据结构的语言。

算法

常见算法类型:递归、分治、模拟、贪心、状态空间搜索、随机、动态规划。

算法的特征:

            ①有穷性、②确定性、③输入、④输出、⑤能行性

“好”的算法的标准:

        ①正确性,算法能满足具体问题的需求

        ②可读性,首先方便阅读与交流,其次才是机器执行

        ③健壮性,输入错误时,能作出反应,避免异常出错

        ④效率与低存储量要求

这些还是比较虚了,而具体来说,复杂度是一个衡量算法水准的重要标准。

复杂度

复杂度分为时间复杂度和空间复杂度。T(n)=O(f(n))S(n)=O(g(n))

运算法则:

加法规则:T1(n)+T2(n)=O(max{f(n), g(n)})

乘法规则:T1(n)*T2(n)=O(f(n)g(n))

通常,表达式和赋值语句记为O1

语句序列:TS1S2……)=Omax{S1,S2...}

条件分支:T(if(B)S1,else(S2))=T(B)+T(else)+Tmax{TS1),TS2}),一般取TB+Telse=O1

switchTswitch条件)+T(每一个分支条件)+max{TS1),TS2),……}

循环:T( for(i=1;i<=n;i++)  s )

      =(T(s)+T(i=1)+T(i<=n)+T(i++)+T(for))

While类似

函数调用:计算相应函数的复杂度,一起算。如果是递归调用,那么求解递归方程(递归方程是什么我也不明白,囧)

展开阅读全文

没有更多推荐了,返回首页