数据结构(四) - 串、数组、矩阵


串:内容受限的线性表

数组和广义表: 线性结构的推广

串的定义

串(String) ---- 零个或多个任意字符组成的有限序列

子串:

串的相关术语:

串相等:

串中元素逻辑关系与线性表的相同,串可以采用与线性表相同的存储结构

串的顺序存储结构

串的链式存储结构

块链结构:

串的模式匹配算法

算法目的:确定主串中所含子串(模式串)第一次出现的位置(定位)

算法应用: 搜索引擎、拼写检查、语言翻译、数据压缩

算法种类:

  • BF算法(Brute-Force, 又称古典的、经典的、朴素的、穷举的)
  • KMP算法(特点: 速度块)

BF 算法

设计思想:

案例:

算法步骤:

关键点:

  • 当发现不匹配时,i回溯的索引怎么计算? i-j+2

  • 如果匹配到,返回的索引是哪个? i-T.length

最坏时间复杂度:

KMP(Knuth Morris Pratt)算法

案例:

可以抛弃主串,主要研究子串,重点在寻找子串中的公共前后缀

当公共前后缀的长度为0,则让子串的第一位与主串的下一位进行比较(后移)

注意j的位置:等于公共前后缀的长度+1

简单易懂版:
https://www.bilibili.com/video/BV1jb411V78H?spm_id_from=333.337.search-card.all.click

next 数组:

数组

定义:

二维数组:

三维数组:

空间地址计算:

  • 一维数组

数组的顺序存储

二维数组的存储方式:

  • 行序

  • 列序

二维数组存储地址的方式:
a[m][n]:
m是行数,代表a[m][n]前面有多少行,
n是列数,代表第m行 , a[m][n]前面有多少个元素
m*n+n : a[m][n]前面所有的元素个数

案例:

矩阵

矩阵: 一个由m * n 个元素排成的m行n列 的表

  • 特殊矩阵的压缩存储

特殊矩阵的压缩存储

  • 对称矩阵

存储位置计算:

  • 三角矩阵

  • 对角矩阵

稀疏矩阵

  • 稀疏矩阵的压缩存储方法 --- 顺序存储结构

三元组顺序表:

例:还原出三元组所表示的稀疏矩阵

三元组顺序表的优缺点:

  • 稀疏矩阵的链式存储结构 --- 十字链表

例1:

例2:

posted @ 2022-04-05 11:37  chuangzhou  阅读(155)  评论(0编辑  收藏  举报