数据结构与算法(python版)--01 基础部分

文章介绍了数据结构的基本概念,包括线性表、树和图,以及数据在内存中的顺序存储和链式存储方式。算法的特性与评价标准也被提及,强调了其在解决问题中的重要性。举例说明了如何为100W个词语设计快速查询的哈希存储方式,以及用图结构解决最小费用问题。
摘要由CSDN通过智能技术生成

基本概念

程序 = 数据结构 + 算法
数据结构,数据的存储(物理结构)及相互间的关联关系(逻辑结构);

  1. 线性表(顺序表、链表、队列、栈),一个前驱,一个后继
  2. 树(二叉树、B树、B+树、红黑树),一个前驱,多个后继
  3. 图,多个前驱,多个后继

算法, 处理问题的逻辑方式

数据存储方式

数据在内存中有如下两种存储方式:

  1. 顺序存储,内存块地址连续,通过相对位置(offset)表示数据间的逻辑关系
    通过索引(偏移量)随机存取;
    插入、删除依次移动多个元素;最坏复杂度O(n)
    如python中的列表

  2. 链式存储,内存块地址不连续,通过指针表示数据间的逻辑关系
    结点包含后继结点的地址信息,空间利用率低;
    必须顺序存取, 不可以随机存取;
    插入、删除方便,时间复杂度O(1)

在这里插入图片描述
求解问题:面向问题,抽象出合适的逻辑结构;面向机器,选择合适的存储结构。

 

算法

算法,是解决某一问题的方法步骤,可以是自然语言或者计算机语言。

算法特性:

  1. 有穷性,操作步骤有限、合理;
  2. 确定性,每一步必须有确定的含义;
  3. 可行性,算法是可行的;
  4. 0个或多个输入;
  5. 一个以上的输出;

算法评价:

  • 正确性
  • 可读性
  • 健壮性
  • 效率(时间)、低存储
    衡量效率,可以事先分析(大O标记的时间复杂度) + 事后统计(统计运行时间)
    在这里插入图片描述
    在这里插入图片描述
    一般关心最坏时间复杂度

案例

  1. 100W个词语,设计最快查询速度的存储方式
    哈希结构, 二进制转为十进制,对应的数值作为索引存入数组

  2. n个城市的连线,最小费用问题
    图结构

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

laufing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值