1、数据结构的基本概念
1.1 基本概念
数据:信息的载体
数据元素:数据的基本单位
数据项:构成数据元素的不可分割的最小单位
数据对象:具有相同性质的数据元素的集合,数据的一个子集
数据类型:值的集合和定义在此集合上的一组操作的总称

  • 原子类型:不可再分。
  • 结构类型:可分成若干成分的数据类型。
  • 抽象数据类型:抽象数据组织及与之相关的操作。

抽象数据类型(ADT):一个数学模型及定义在该模型上的一组操作。

数据结构:数据元素之间的相互关系。
1.2 数据结构三要素
数据结构三要素:逻辑结构,存储结构,数据的运算。

  • 逻辑结构:集合、线性结构、树形结构、图状(网状)结构。
  • 存储结构:又称物理结构。顺序存储、链式存储、索引存储、散列存储。
  • 数据的运算:施加在数据上的运算包括运算的定义和实现。运算的定义是针对逻辑结构的,指出运算的功能;元素俺的实现是针对存储结构的,指出运算的具体操作步骤。

2、算法和算法评价
2.1 算法的基本概念
有穷性:一个算法必须在执行有穷步之后结束,且每一步都在有穷时间内完成。
确定性:代码不存在二义性。
可行性:算法中描述的操作都是可以通过已经实现的基本操作执行有限次来实现的。
输入:一个算法有零个或多个输入,这些输入取自某个特定的对象的集合。
输出:一个算法有一个或多个输出,这些输出是与输入有着某种特定的关系的量。

2.2 好算法的目标
正确性:首先算法能够解决问题
可读性:算法容易理解
健壮性:又称鲁棒性,当输入非法数据时,算法能检测到,不会最终输出乱七八糟的东西。
效率与低存储量需求:也就是时间复杂度与空间复杂度。

2.3 算法效率的度量
2.3.1 时间复杂度
定义:一个语句的频度是指该语句在算法中被重复执行的次数。算法中所有语句的频度之和记为T(n)T(n)T(n),他是该算法问题规模n的函数,时间复杂度主要分呢西T(n)T(n)T(n)的数量级。

  • 最坏时间复杂度:在最坏情况下,算法的时间复杂度。(比如冒泡排序最坏时间复杂度为O(n2)O(n^2)O(n2)最优)
  • 平均时间复杂度:指所有可能的输入实例在等概率出现的情况下,算法的期望运行时间。
  • 最好时间复杂度:在最好情况下,算法的时间复杂度。(比如冒泡排序最好时间复杂度为O(n)O(n)O(n)最优)

在分析一个程序的时间复杂性时,有一下两条规则:

  • 加法规则:T(n)=T1(n)+T2(n)=O(f(n))+O(g(n))=O(max(f(n),g(n)))T(n) = T_1(n)+T_2(n) = O(f(n))+O(g(n)) = O(max(f(n),g(n)))T(n)=T1​(n)+T2​(n)=O(f(n))+O(g(n))=O(max(f(n),g(n)))
  • 惩罚规则:T(n)=T1(n)×T2(n)=O(f(n))×O(g(n))=O(f(n)×g(n))T(n) = T_1(n) \times T_2(n) =O(f(n)) \times O(g(n)) = O(f(n) \times g(n))T(n)=T1​(n)×T2​(n)=O(f(n))×O(g(n))=O(f(n)×g(n))
  • 常见的渐进时间复杂度为:
    O(1)<O(log2(n))<O(nlog2(n))<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)O(1) < O(log_2(n)) < O(nlog_2(n)) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n) O(1)<O(log2​(n))<O(nlog2​(n))<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)

2.3.2 空间复杂度
定义:算法的空间复杂度S(n)S(n)S(n)定义为该算法所耗费的存储空间,它是问题规模n的函数。

3、 题目
计算算法的时间复杂度

(1)数据结构-绪论相关推荐

  1. Chapter 1(数据结构绪论)

    附件列表 数据结构绪论.jpg 转载于:https://www.cnblogs.com/LyndonMario/p/9326311.html

  2. C语言数据结构(大话数据结构——笔记1)数据结构绪论、算法、线性表

    [C语言描述]<数据结构和算法> 说是这个教程是按照<大话数据结构>这本书来编写的:数据结构与算法经典书籍--大话数据结构(带配套源码) ↑废话太TM多了,换一个! [搞定数据 ...

  3. 大话数据结构读书笔记艾提拉总结 查找算法 和排序算法比较好 第1章数据结构绪论 1 第2章算法 17 第3章线性表 41 第4章栈与队列 87 第5章串 123 第6章树 149 第7章图 21

    大话数据结构读书笔记艾提拉总结 查找算法 和排序算法比较好 第1章数据结构绪论 1 第2章算法 17 第3章线性表 41 第4章栈与队列 87 第5章串 123 第6章树 149 第7章图 211 第 ...

  4. 数据结构—绪论(基本知识点第一章)

    第一章数据结构绪论 目录 第一章数据结构绪论 什么是数据结构? 1.3数据结构起源 1.4基本概念和术语 1.4.1数据 1.4.2数据元素 1.4.3数据项 1.4.4数据对象 1.4.5数据结构 ...

  5. 数据结构学习笔记(2)之数据结构绪论

    大话数据结构之数据结构绪论 1 基本概念及术语 1.1 数据 1.2 数据元素 1.3 数据项 1.4 数据对象 1.5 数据结构 2 逻辑结构与物理结构 2.1 逻辑结构 2.2 物理结构 3 抽象 ...

  6. 数据结构——绪论以及线性表的顺序表示

    绪论 数据类型 数据类型是一个值的集合和定义在此集合上一组操作的总称. (1)原子类型:其值不可再分的数据类型,如int,char,float. (2)结构类型:其值可以再分解为若干成分的数据类型. ...

  7. 《大话数据结构》第1章 数据结构绪论 1.2 你数据结构怎么学的?

    1.2 你数据结构怎么学的?         早先我有一个学生叫蔡遥,绰号"小菜".他前段时间一直通过E-mail与我交流,其中说起了他工作的一些经历,感慨万千.我在这里就讲讲小菜 ...

  8. 《大话数据结构》第1章 数据结构绪论 1.1 开场白

    1.1 开场白         If you give someone a program, you will frustrate them for a day; if you teach them ...

  9. 数据结构绪论——什么是数据结构?

    为什么写这篇文章 <数据结构>这门课有很多教材,各种概念十分混乱.为了解决概念之间的矛盾,写下这篇博客. 比如严蔚敏的书中存在数据类型和数据结构的混乱,数据类型和ADT的混乱.书上所写本就 ...

  10. 数据结构 第一章 数据结构绪论

    数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科. 数据:所有能被输入到计算机中,且能被计算机处理的符号的集合.是计算机操作的对象的总称. 数据元素:数 ...

最新文章

  1. 名校计算机博士:拿到了五个工作机会,华为是最差的!
  2. 大学python实训总结-【实训总结】大学生python相关实训总结
  3. linux创建文件后会自动删除,linux会自动删除目录和文件的吗
  4. js用递归遍历多维数组_JavaScript树结构操作:查找、遍历、筛选、树结构和列表结构相互转换...
  5. html一个div调用的一个php页面,打开一个HTML文件,一个div/iframe中内PHP
  6. Python股票分析系列——系列介绍和获取股票数据.p1
  7. 出现java.sql.SQLException: No suitable driver的几种解决办法
  8. 中国智能汽车行业市场需求趋势与发展战略规划建议报告2022-2028年版
  9. Windows下LaTeX安装教程与新手入门
  10. 如何短期通过PMP考试?
  11. 结合插件实现【IDM+百度网盘】高速下载
  12. Python源码阅读(一)
  13. 每日excel学习之查找替换和定位
  14. 利用scrapy爬取句子迷网站优美句子存储到本地(喜欢摘抄的人有福了!)
  15. 2023年天津农学院专升本停招专业的备考建议?
  16. 《英语语法新思维初级教程》学习笔记(六)实义动词与(情态)助动词
  17. 基于微信 xlog 开源 日志框架
  18. 阿里品牌数据品牌银行分析师认证真题资料库整理答案
  19. java确认对话框否_如何在Swing中显示是/否和取消选项的确认对话框?
  20. MP6050使用DMP库获取计步数

热门文章

  1. 《Effective C#》读书笔记——条目25:用事件模式实现通知使用C#表达设计
  2. Flash研究(一)——本地通讯
  3. 为Exchange Server创建多主机名证书
  4. 设为首页 和 收藏本页
  5. householder变换解线性方程组matlab实现
  6. 【欧洲AI复兴】马克龙:法国AI要赶美超中!
  7. [Curator] Leader Latch 的使用与分析
  8. 让图片左右缓慢移动的MoveView
  9. 视频日志之android的总结与思考
  10. iphone 开发内存管理 心得