数据结构——绪论

文章目录

数据结构的基本概念

  • 数据: 数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号集合。例如具有一定意义的数字、符号等
  • 数据元素: 数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。一个数据元素可由若干数据项组成,数据项是构成数据元素的不可分割的最小单位。例如:电脑是一个数据元素,则它的品牌、价格就是数据项
  • 数据对象: 数据对象是具有相同属性的数据元素的集合,是数据的一个子集。例如:手机店里的手机
  • 数据类型: 数据类型是一个值的集合和定义在此集合上的一组操作的总称。例如:一个数组
    1. 原子类型:其值不可再分的数据类型
    2. 结构类型:其值可以再分解为若干成分(分量)的数据类型
    3. 抽象数据类型:抽象数据类型描述了数据的逻辑结构和抽象运算,通常用(数据对象、数据关系、基本操作集)这样的三元组来表示,从而构成一个完整的数据结构定义。例如:栈和对列
  • 数据结构: 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。在任何问题中,数据元素都不是独立存在的,它们之间存在某种关系,这种数据元素相互之间的关系成为结构。数据结构包括三方面的内容:逻辑结构、存储结构和数据的运算
  • 数据结构三要素:
    1. 数据的逻辑结构: 逻辑结构是指数据元素之间的逻辑关系,即从逻辑关系上描述数据。它与数据的存储无关。数据的逻辑结构分为线性结构和非线性结构
    2. 数据的存储结构: 存储结构是指数据结构在计算机中的表示(又称映像),也称物理结构。它包括数据元素的表示和关系的表示。数据的存储结构是用计算机语言实现的逻辑结构,它依赖于计算机语言。数据的存储结构主要有顺序存储链式存储索引存储散列存储
    3. 数据的运算: 数据的运算其实就是大家熟悉的增删改查,不过相比数据库现成的SQL,数据结构实现起来有很多细节需要考虑

算法的基本概念

  • 算法 是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作
  • 算法的5个重要特性:
    一个算法必须满足5大特性
    1. 有穷性:一个算法必须总在执行有穷步之后结束,且每一步都可在有穷时间内完成
    2. 确定性:算法中每条指令必须有确切的含义,对于相同的输入只能得出相同的输出
    3. 可行性:算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现
    4. 输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合
    5. 输出:一个算法有一个或多个输出,这些输出是与输入有着某种特定关系的量
  • 算法的4个基本标准
    评价算法的优劣应该从以下几个方面:
    1. 正确性:设计的算法一定是正确的
    2. 可读性:设计的算法能让别人容易读懂
    3. 健壮性:对于非法输入,算法一定可以判断做出正确的处理
    4. 高效性:设计的算法要尽可能的跑的快,占用空间小

算法的效率的度量是通过时间复杂度空间复杂度来描述的

  • 时间复杂度: 一个语句的频度是指该语句在算法中被重复执行的次数。算法中所有语句的频度和记T(n) ,它是该算法问题规模 n 的函数,时间复杂度主要分析 T(n) 的数量级。算法中基本运算(深层循环内的语句)的频度与 T(n) 同数量级,通常采用算法中基本运算的频度 f(n) 来分析算法的时间复杂度。因此,算法的时间复杂度记为:T(n)=O(f(n))
  • 空间复杂度(Space Complexity): 是对一个算法在运行过程中临时占用存储空间大小的量度,记做S(n)=O(f(n))。比如直接插入排序的时间复杂度是O(n^2),空间复杂度是O(1) 。而一般的递归算法就要有O(n)的空间复杂度了,因为每次递归都要存储返回信息
相关推荐
apocelipes12 小时前
常用编程语言和库的正则表达式性能对比
c语言·c++·python·性能优化·golang·开发工具和环境
CSharp精选营4 天前
关系型 vs 非关系型:从原理到选型,一文搞定数据库核心分类
数据结构·nosql·关系型数据库·非关系型数据库·技术选型
刘马想放假7 天前
Modbus 全栈技术解析:TCP、RTU、ASCII、RTU over TCP
数据结构·网络协议
北域码匠8 天前
冒泡排序太慢?鸡尾酒排序双向优化,原生 C# 零第三方库完整代码
数据结构·排序算法·泛型·c# 算法·鸡尾酒排序·原生 c# 开发·冒泡排序优化·嵌入式算法
Darling噜啦啦15 天前
列表转树算法深度解析:从 Map 到 Reduce 的两种实现,面试高频考点
数据结构·算法·面试
LDR00616 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
小小工匠16 天前
Redis - 事务机制:能实现 ACID 属性吗
数据结构·redis·性能优化·并发·持久化
Luminous.16 天前
C语言--day30
c语言·开发语言
玖玥拾16 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
謓泽16 天前
C语言不是语法,是通往机器的地图。
c语言·开发语言