数据结构的基本概念

数据结构中涉及很多的概念,这些概念在后面也许用不到,但是对于理解数据结构的概念具有很好的帮助

数据:数据是信息的载体,能够输入到计算机内并且被计算机程序所识别和处理的符号的集合就是数据。

数据元素:数据元素是数据的基本单位,一个数据元素可由若干个数据项组成,数据项是数据元素最小的不可分割的最小单位。

数据对象:数据对象是具有相同性质的数据元素的集合,是数据的一个子集。

数据类型:数据类型是一个值的集合和定义在这个集合上的一组操作的总称。数据类型分为三类,原子类型指的是其值不可以再分的数据类型,结构类型是其值可以再分解的数据类型,抽象数据类型则是抽象数据组织及与之相关的操作。

数据结构:相互之间存在一种或多种特定关系的数据元素的组合,包括三方面的内容:逻辑结构、存储结构和数据的运算。算法的设计取决于选用的逻辑结构,而算法的实现主要靠所采用的存储结构。

数据的逻辑结构指的是数据元素之间的逻辑关系,即从逻辑关系上描述数据,与数据存储无关,是独立于计算机的,也就是我们画在纸上的结构。
逻辑结构一般分为线性结构和非线性结构,线性结构的典型代表是线性表,集合、树和图是典型的非线性结构。

数据的存储结构指的是数据结构在计算机内的表示,也称物理结构。它包括数据元素的表示和关系的表示,依赖于计算机语言。存储结构主要包括顺序存储、链式存储、索引存储和散列存储。
顺序存储值得是逻辑上相邻的元素在物理位置上也相邻,元素之间的关系由存储单元的临接关系来体现。
①链式存储:不要求逻辑上相邻的元素物理位置上也相邻,借助指针来表示元素之间的逻辑关系。
②索引存储:实质在存储元素信息的同时,还建立附加的索引表。
③散列存储:是通过关键字直接计算出该元素的存储地址,又称哈希存储。

1.2 算法和算法评价

数据结构与算法是挂钩而且密不可分的,所谓算法,指的是对特定问题求解步骤的一种描述。算法必须满足下面的五个特征:
有穷性:算法必须在执行有穷步之后结束,并且每一步都可以在有限时间内完成。
确定性:算法中每条指令必须有确切的含义,相同的输入一定是相同的输出。
可行性:算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现。
输入:一个算法有零个或者多个输入。
输出:一个算法有一个或者多个输出。

衡量算法的效率也是算法里面常考的内容。算法效率的衡量主要是通过时间复杂度和空间复杂度来描述的。

提到时间复杂度,首先需要明白什么事语句的频度,语句的频度指的是语句在算法中被重复执行的次数,算法中所有语句的频度之和记作T(n),这是一个与算法问题规模n有关的函数,算法中基本运算的频度与T(n)同数量级,一般用基本运算的频度来分析时间复杂度。简单来说,一个程序运行需要的时间,主要是看里面语句的执行次数,而对于一般的顺序语句,基本都是一去不返,执行一次就没有第二次,而占据大部分时间的,是语句中的循环语句,所以用最深层循环中的语句的频度来研究时间复杂度。
计作T(n)=O(f(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))

一般常见的渐进时间复杂度为:
O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2的n次方)<O(n!)<O(n的n次方)

空间复杂度指的是该算法所耗费的存储空间。一般一个程序执行时除需要存储空间来存放本身的指令、常数、变量和输入数据外,还需要一些辅助空间,比如需要借助队列或者堆栈来辅助算法,这些都是空间复杂度所需要考虑的。算法原地工作所需要的辅助空间为常量,即O(1)。

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

  1. 0基础学习数据结构(0绪论)

    持续更新中-- 绪论 1.1数据结构的兴起和发展 1.2研究对象与基本概念 1.3抽象数据类型 区别数据类型.数据结构和ADT 1.4算法及算法分析 算法分析----大O记号 算法分析----时间复杂 ...

  2. 数据结构复习题(绪论)

    数据结构复习题(绪论) 绪论 选择题 填空题 简答题 判断题 绪论 选择题 线性结构中数据元素的位置之间存在( A )的关系 A.一对多 B.一对一 C.多对多 D.每一个元素都有一个直接前驱和一个直 ...

  3. 数据结构从0.2到1(一)

    数据结构从0.2到1 为什么要选择这样的一个标题呢,当然,主要是要写一系列关于学习数据结构的文章.但是,为什么是从0.2呢?因为作为一名计算机专业毕业的学生来说,实在不好意思说自己从0到1,我真的是怕 ...

  4. 模式识别——0.绪论

    第一章 绪论 主要是针对考试的复习,和一些重点内容的标注,对书本内容做了删减,加了自己的笔记和思考 注:该系列参考的是机械工业出版社的模式分类和周志华老师的西瓜书.按理说应该投转载,但苦于不知道该怎么 ...

  5. 【烈日炎炎战后端】 数据结构(0.7万字)

    数据结构 1. B-树和B+树 2. 红黑树 3. 跳表 4. 排序 5. 哈希冲突解决方法 6. dfs和bfs 1. B-树和B+树 图片来源: link. 一个m阶的B-树和B+的区别,具有如下 ...

  6. 数据结构[1]--学习--绪论(学习记录)

    学校的教材是浙大教授陈越的,但是我决定使用的是王道的考研数据结构,在直接进行学习前有必要理清学习的整体思路,这样更有利于理解,当然并不是要求一开始就记住,只是有个印象就行. 既然整本书都有一个框架,那 ...

  7. 沈阳师范大学大二上数据结构第一章绪论(选择+单选+填空))

    1-1 数据项是数据的最小单位. (2分) T 作者 李廷元 单位 中国民用航空飞行学院 1-1 1-2 数据元素是数据的最小单位. (2分) F 作者 李廷元 单位 中国民用航空飞行学院 1-2 1 ...

  8. 数据结构——第一章 绪论习题

    目录 写在前面 知识点导图 严蔚敏版习题 王曙燕版习题 写在前面 该习题答案非标准答案,正确不保证,如有错误望指正. 知识点导图 严蔚敏版习题 一.单项选择题(部分) 2.与数据元素本身的形式.内容. ...

  9. 【王道】数据结构与算法绪论(一)

    ✍.目录总览 绪论的重点为时间复杂度的计算. 1.绪论 数据:数据是信息的载体,是描述客观事物属性的数.字符及所有能输入到计算机最终并被计算机程序识别和处理的符号的集合.数据是计算机程序加工的原料. ...

  10. 数据结构与算法--绪论

    本图文涉及的概念: 数据结构(Data Structure).数据(Data).数据元素(Data Element).数据项(Data Item).数据逻辑结构(Logical Structure). ...

最新文章

  1. java操作跨页的word cell,利用itext 生成pdf,处理cell 跨页问题 [转]
  2. Jquery源码解析-设计理念
  3. Qt中的QLabel组件
  4. java bmp_JAVA实现对BMP图片的读取
  5. python百度翻译包_python百度翻译移动端
  6. python cnn模型_ZfNet解卷积:可视化CNN模型( PythonCode可视化Cifar10)
  7. 两个空间点直接距离投影公式_线积分与面积分(2):最初的公式
  8. python后端将svc文件数据读入数据库具体实现
  9. 【转载】那么明亮的sz4j
  10. C函数形参列表与汇编寄存器的对应关系
  11. python高级编程总结
  12. TOPSIS综合评价模型
  13. 观察者研报 | Moon的崛起
  14. 最新正则表达式验证手机号和邮箱
  15. 69个经典Java面试题和答案详解,手慢无
  16. 发票专用驱动sjz_收藏!增值税发票(发票勾选)选择确认平台使用手册
  17. MATLAB有趣或有用小程序合集
  18. What?Tomcat 竟然也算中间件?
  19. 佛山市政携手企企通,打造高效协同的云端极速供应链
  20. 【Linux】文件的编码语系转换与换行符转换

热门文章

  1. JavaScript基础学习(一)—JavaScript简介
  2. css方法div固定在网页底部
  3. 如何学习IOS开发~三个字(学思做)
  4. LeetCode_database刷题记录(181. 超过经理收入的员工)
  5. 各种集合key,value能否为null
  6. 应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的(转载)...
  7. 【数据库开发】windows下hiredis的编译(主要是包括一些异步编程的错误)
  8. Mongodb For Mac OSX 登录验证
  9. solr4.3纠错源码学习二——基于主索引
  10. 【Java从0到架构师】MyBatis - 查询