昆明做凡科网站,wordpress如何导入,免费的个人简历模板网站,酒店 企业网站建设的思路概念大合集01 1、数据结构基础的定义2、数据结构2.1 数据元素之间关系的集合2.2数据结构的三要素2.2.1数据的逻辑结构2.2.2数据的存储#xff08;物理#xff09;结构2.2.3数据的运算 3、数据类型4、抽象数据类型类型#xff08;ADT#xff09;5、算法及其描述5.1算法的5个… 概念大合集01 1、数据结构基础的定义2、数据结构2.1 数据元素之间关系的集合2.2数据结构的三要素2.2.1数据的逻辑结构2.2.2数据的存储物理结构2.2.3数据的运算 3、数据类型4、抽象数据类型类型ADT5、算法及其描述5.1算法的5个特性5.2算法设计的目标5.3算法的时间复杂度5.3.1时间复杂度的求和、求积定理 5.4算法的空间复杂度 阅读指导 本文内容丰富涵盖广泛读者朋友们可以根据目录指引直接跳跃至您感兴趣的章节开始品读。此外作者正在积极创作后续篇章如果您对本篇文章有所喜爱不妨点击关注以便第一时间获取最新作品动态。 现在让我们开始正文的旅程吧。希望您能细细品味每一个字句如果您在任何地方发现有任何不妥或欠缺之处请在评论区不吝赐教。作者将虚心接受您的宝贵意见并努力进行改进。期待您的宝贵反馈 下一篇文章 数据结构的概念大合集02线性表
1、数据结构基础的定义
名称具体概念数据描述客观事物的数和字符的集合能被计算机程序处理的符号总称数据元素数据的基本单位又称元素、结点、顶点、记录数据项是具有独立含义的数据最小单位是构成数据元素的最小单位又称字段、域数据对象性质相同的数据元素的集合是数据的一个子集数据结构是相互之间存在一种或多种特定关系的数据元素的集合包括逻辑结构和物理结构数据类型是一个值的集合和定义在这个值集上的一组操作的总称抽象数据类型是指一个数学模型以及定义在该模型上的一组操作 2、数据结构
2.1 数据元素之间关系的集合
数据的基本结构关系集合属于同一个集合没有什么具体关系线性结构一对一树形结构一对多图形网状结构多对多
2.2数据结构的三要素
2.2.1数据的逻辑结构
从逻辑上表示数据与具体的存储无关 #mermaid-svg-ZLGdDhR9Ctcdgqr6 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 .error-icon{fill:#552222;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 .marker.cross{stroke:#333333;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 .cluster-label text{fill:#333;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 .cluster-label span{color:#333;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 .label text,#mermaid-svg-ZLGdDhR9Ctcdgqr6 span{fill:#333;color:#333;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 .node rect,#mermaid-svg-ZLGdDhR9Ctcdgqr6 .node circle,#mermaid-svg-ZLGdDhR9Ctcdgqr6 .node ellipse,#mermaid-svg-ZLGdDhR9Ctcdgqr6 .node polygon,#mermaid-svg-ZLGdDhR9Ctcdgqr6 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 .node .label{text-align:center;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 .node.clickable{cursor:pointer;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 .arrowheadPath{fill:#333333;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 .cluster text{fill:#333;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 .cluster span{color:#333;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ZLGdDhR9Ctcdgqr6 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 数据的逻辑结构 线性结构 非线性结构 线性表 栈 队列 树 图 集合 2.2.2数据的存储物理结构
指的是数据的逻辑结构在计算机的具体实现依赖于计算机语言 #mermaid-svg-hguJO888OBjn0ZCy {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hguJO888OBjn0ZCy .error-icon{fill:#552222;}#mermaid-svg-hguJO888OBjn0ZCy .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-hguJO888OBjn0ZCy .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-hguJO888OBjn0ZCy .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-hguJO888OBjn0ZCy .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-hguJO888OBjn0ZCy .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-hguJO888OBjn0ZCy .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-hguJO888OBjn0ZCy .marker{fill:#333333;stroke:#333333;}#mermaid-svg-hguJO888OBjn0ZCy .marker.cross{stroke:#333333;}#mermaid-svg-hguJO888OBjn0ZCy svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-hguJO888OBjn0ZCy .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-hguJO888OBjn0ZCy .cluster-label text{fill:#333;}#mermaid-svg-hguJO888OBjn0ZCy .cluster-label span{color:#333;}#mermaid-svg-hguJO888OBjn0ZCy .label text,#mermaid-svg-hguJO888OBjn0ZCy span{fill:#333;color:#333;}#mermaid-svg-hguJO888OBjn0ZCy .node rect,#mermaid-svg-hguJO888OBjn0ZCy .node circle,#mermaid-svg-hguJO888OBjn0ZCy .node ellipse,#mermaid-svg-hguJO888OBjn0ZCy .node polygon,#mermaid-svg-hguJO888OBjn0ZCy .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-hguJO888OBjn0ZCy .node .label{text-align:center;}#mermaid-svg-hguJO888OBjn0ZCy .node.clickable{cursor:pointer;}#mermaid-svg-hguJO888OBjn0ZCy .arrowheadPath{fill:#333333;}#mermaid-svg-hguJO888OBjn0ZCy .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-hguJO888OBjn0ZCy .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-hguJO888OBjn0ZCy .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-hguJO888OBjn0ZCy .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-hguJO888OBjn0ZCy .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-hguJO888OBjn0ZCy .cluster text{fill:#333;}#mermaid-svg-hguJO888OBjn0ZCy .cluster span{color:#333;}#mermaid-svg-hguJO888OBjn0ZCy div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-hguJO888OBjn0ZCy :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 数据的存储结构 顺序存储 链式存储 索引存储 散列存储 哈希存储 2.2.3数据的运算
数据的运算包括运算定义和运算实现
运算定义对于运算功能的描述是抽象的是基于逻辑关系的运算实现是程序员完成运算的实现算法是具体的是基于存储结构的
3、数据类型
指的是一组性质相同的值的集合和定义在此集合上的一组操作的总称 比如C语言中的int、float等。
4、抽象数据类型类型ADT
逻辑结构抽象运算 定义抽象数据类型 ADT 抽象数据类型名 { 数据对象数据对象的定义 数据关系数据关系的定义 基本操作基本操作的定义 }
5、算法及其描述
5.1算法的5个特性
又穷性确定性可行性有输入有输出
5.2算法设计的目标
正确性可使用性可读性健壮性高效率与低存储量需求
5.3算法的时间复杂度
主要衡量的是一个算法的运行速度。为了描述一个算法的时间复杂度人们发明了一个通用的表示方法 「 大O符号表示法 」即 T(n) O(f(n)) 我们先来看个例子
for(i1; in; i) //第一行
{j i; //第三行j; //第四行
}在大O符号表示法中f(n)表示每行代码的执行次数之和
所以上述代码中第一行执行一次第三行执行n次第四行执行n次整段代码执行12n次即f(n)12n
取波极限当n无穷大时则令f(n)n注意不是2n这是简化的写法
于是此时T(n) O(n)
为什么可以大O表示法可以简写呢主要是因为这个表达式主要是表示代码执行时间的增长的变化趋势的所以当n无穷大时常数1和倍数2的意义就不是很大了。所以在采取大O表示法的时候我们常取其指数最大的一项来表示同时省略其他项和指数最大项的倍数。
常见的时间复杂度量级有
常数阶O(1)对数阶O(logN)线性阶O(n)线性对数阶O(nlogN)平方阶O(n²)立方阶O(n³)K次方阶O(n^k)指数阶(2^n)
上面从上至下依次的时间复杂度越来越大执行的效率越来越低。
5.3.1时间复杂度的求和、求积定理
T1(n) O(f(n)) T2(n) O(g(n)) 求和T1(n) T2(n) O( Max ( f(n),g(n) ) ) 求积T1(n) × T2(n) O( f(n) × g(n) )
5.4算法的空间复杂度
空间复杂度是对一个算法在运行过程中临时占用存储空间大小的一个量度同样反映的是一个趋势我们用 S(n) 来定义。与上面的时间复杂度一样也采用大O表示法。 即S(n) O( g(n) ) 举例
空间复杂度O(1) 如果算法执行所需要的临时空间不随着某个变量n的大小而变化即此算法空间复杂度为一个常量可表示为 O(1) 举例
int i 1;
int j 2;
i;
j;
int m i j;代码中的 i、j、m 所分配的空间都不随着处理数据量变化因此它的空间复杂度 S(n) O(1)
空间复杂度O(n)
int fun(int n)
{return n 2 ? n : fun(n - 1)*n;
}阶乘递归函数会依次调用fun(N),fun(N-1),…,fun(2),fun(1)开辟了n个空间所以空间复杂度为O(n) 。