一些基础知识

本文探讨了数据结构在编程中的重要性,包括线性、层次和网状逻辑结构,以及顺序、链式、索引和哈希存储结构。讲解了算法设计与实现,强调算法的正确性、易读性和效率评估。重点介绍了计算大O方法,揭示了如何通过优化算法提升程序性能。
摘要由CSDN通过智能技术生成

数据结构

让代码更简洁和高效

1.逻辑结构

​ 概念:描述数据之间的逻辑规律和数据之间的联系
​ (元素与元素之间的关系)

逻辑结构的分类:
  1. 线性结构–>一对一的关系–>线性表
    头节点无前驱,尾节点无后继
  2. 层次结构—>一对多的关系–>树
    根节点无前驱,叶子节点无后继
  3. 网状结构—>多对多的关系–>图
2.存储结构

概念:数据的逻辑结构在计算机中的具体实现。

存储结构分类:
  1. 顺序存储:内存空间开辟是连续
    数组:内存空间连续开辟,数据元素类型相同
  2. 链式存储:通过地址将数据元素联系在一起
  3. 索引存储:通过索引表找到数据元素存放位置,拿到数据
    存在两个表格: 索引表 和 数据表
  4. 散列存储结构 (哈希存储)
    数据元素的存放和位置之间存在一个关系。

​ 存在一个关系函数和关键值(key)
​ 将key代码关系函数可以计算出数据存放的位置。
​ 存安照对应位置存,取按照对应位置取。

算法

  1. 算法和程序

    ​ 算法:解决问题的思想办法
    ​ 程序:用计算机语言对算法的具体实现

  2. 算法+数据结构=程序

    算法的设计:依赖于逻辑结构
    算法的实现:依赖于存储结构

  3. 算法的特性

    ​ 1)有穷性:执行步骤是有限的
    ​ 2)确定性:每个步骤,无二义性,没有歧义
    ​ 3)可行性:能够在有限时间内完成
    ​ 4)输入和输出:一个算法可以有一个或多个输入和输出

  4. 如何评价一个算法的好坏

    ​ 正确性:保证算法是可以正确完成功能的实现
    ​ 易读性:容易被解读
    ​ 健壮性:容错(错误)处理
    ​ 高效性:执行效率,算法执行快慢容易受到计算机性能的影响,不可以作为评判算法高效性的 标准,这通过可执行语句重复执行次数来衡量算法是否高效 。(时间复杂度)
    ​ 低存储性: 占用空间小 (空间复杂度)

计算大O的方法

​ (1)根据问题规模n写出表达式 f(n)
​ (2)如果有常数项,将其置为1
​ //当f(n)的表达式中只有常数项的时候,有意义 f(n) = 8
​ //T(n)=O(1)
​ (3)只保留最高项,其它项舍去
​ (4)如果最高项系数不为1,除以最高项系数

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值