数据结构(四) - 串、数组、矩阵
串:内容受限的线性表
数组和广义表: 线性结构的推广
串的定义
串(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:

本文来自博客园,作者:chuangzhou,转载请注明原文链接:https://www.cnblogs.com/czzz/p/16101804.html

浙公网安备 33010602011771号