@第 四 章

第四章字符串和多维数组

本章的基本内容是:

串的存储结构及模式匹配算法数组的逻辑结构特征

数组的存储结构及寻址方法特殊矩阵和稀疏矩阵的压缩存储方法字符串的定义

字符串:零个或多个字符组成的有限序列。简称串串长度:串中所包含的字符个数。

空格串:只包含空格的串。

空串:长度为0的串,记为:"
"。

非空串通常记为:

S=" s1 s2 ……
sn "

其中:S是串名,双引号是定界符,双引号引起来的部分是串值,si(1≤i≤n)是一个任意字符。

字符串的定义

串的数据对象约束为某个字符集。

•微机上常用的字符集是标准ASCII码,由 7
位二进制数表示一个字符,总共可以表示 128 个字符。扩展ASCII码

由 8 位二进制数表示一个字符,总共可以表示 256 个字符,足够表示英语和一些特殊符号,但无法满足国际需要。

•Unicode由 16 位二进制数表示一个字符,总共可以表示

216个字符,即6万5千多个字符,能够表示世界上所有语言的所有字符,包括亚洲国家的表意字符。为了保持兼

容性,Unicode字符集中的前256个字符与扩展ASCII码完全相同。

字符串的定义

子串:串中任意个连续的字符组成的子序列。

主串:包含子串的串。

子串的位置:子串的第一个字符在主串中的序号。

S1="ab12cd " //长度为6的串

S2= “ab12” //长度为4的串

S3= “26138” //长度为5的串

S4=“ab12φ” //长度为5的串

S5= “” //空串,长度为0

S6= "φφφ " //含3个空格的空格串,长度为3

字符串的定义

串的比较:通过组成串的字符之间的比较来进行的。给定两个串:X="x1x2…xn"和Y=“y1y2…ym”,则:

  1. 当n=m且x1=y1,…,xn=ym时,称X=Y;

  2. 当下列条件之一成立时,称X<Y:

⑴ n<m且xi=yi(1≤ i≤n);

⑵存在k≤min(m,n),使得xi=yi(1≤i≤k-1)且xk<yk。

例:S1="ab12cd
",S2=“ab12”,S3="ab13“

“串值大小”是按“词典次序”进行比较的。

串的抽象数据类型定义


StrLength
(s):求串s的长度。


StrAssign
(s1, s2):赋值,将s2的值赋值给串s1。


StrConcat
(s1, s2, s):连接,将串s2放在串s1的后面连接成一个新串s。


SubStr
(s, i, len):求子串,返回从串s的第i个字符开始取长为 len 的子串。


StrCmp
(s1, s2):串比较,若s1=s2,返回0;若 s1<s2,
返回-1;若s1>s2, 返回1。


StrIndex
(s, t):定位,返回子串t在主串s中首次出现的位置。若t不是s的子串,则返回0。

串的抽象数据类型定义


StrInsert
(s, i, t):插入,将串t插入到串s中的第i个位置。


StrDelete
(s, i, len):删除,在串s中删除从第i个字符开始的连续len个字符。


StrRep
(s, t, r):替换,在串s中用串r替换所有与串t
相等的子串。

与其他数据结构相比,串的操作对象有什么特点?

串的操作通常以串的整体作为操作对象。

串的抽象数据类型定义

模式匹配问题的特点:

⑴算法的一次执行时间不容忽视:问题规模通常很

大,常常需要在大量信息中进行匹配;

⑵算法改进所取得的积累效益不容忽视:模式匹配操作经常被调用,执行频率高。

模式匹配——BF算法

设串S长度为n,串T长度为m,在匹配成功的情况下,考虑两种极端情况:坏情况:不成功的匹配都发生在串T的 后一个字符。

设匹配成功发生在si处,则在i-1趟不成功的匹配中共比较了(i-1)×m次,第i趟成功的匹配共比较了m次,所以总共比较了i×m次,因此

p i( × m) == O n( × m) i=1

模式匹配——KMP算法

KMP算法是模式匹配算法的一种改进算法,是D.E.Knuth与

J.H.Morris和V.R.Pratt 同时发现的,因此人们称它为克努特-莫里斯-普拉特操作(简称KMP算法)。

为什么BF算法时间性能低?

在每趟匹配不成功时存在大量回溯,没有利用已经部分匹配的结果。

字符串

KMP算法用伪代码描述

在串S和串T中分别设比较的起始下标i和j;

循环直到S中所剩字符长度小于T的长度或T中所有字符均比较完毕

2.1 如果S[i]=T[j],继续比较S和T的下一个字符;否则

2.2 将j向右滑动到next[j]位置,即j=next[j];

2.3 如果j=0,则将i和j分别加1,准备下一趟比较;

如果T中所有字符均比较完毕,则返回匹配的起始下标;否则返回0;

字符串

求模式串T的next函数值算法

void GetNext(char T[ ],
int next[ ])

{

next[1]=0;
j=1; k=0;

while (j<T[0]) if ((k==0)| |(T[j]= =T[k])) { j++; k++; next[j]=k;

}

else k=next[k];

}

数组的定义

数组是由一组类型相同的数据元素构成的有序集合,每个数据元素称为一个数组元素(简称为元素),每个元素受n(n≥1)个线性关系的约束,每个元素在n个线性关系中的序号i1、i2、…、in称为该元素的下标,并称该数组为 n 维数组。

数组的特点

¾元素本身可以具有某种结构,属于同一数据类型;

¾数组是一个具有固定格式和数量的数据集合。

特殊矩阵和稀疏矩阵

特殊矩阵:矩阵中很多值相同的元素并且它们的分布有一定的规律。

稀疏矩阵:矩阵中有很多零元素。

压缩存储的基本思想是:

⑴为多个值相同的元素只分配一个存储空间;

⑵对零元素不分配存储空间。特殊矩阵的压缩存储——对称矩阵

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本系统的研发具有重大的意义,在安全性方面,用户使用浏览器访问网站时,采用注册和密码等相关的保护措施,提高系统的可靠性,维护用户的个人信息和财产的安全。在方便性方面,促进了校园失物招领网站的信息化建设,极大的方便了相关的工作人员对校园失物招领网站信息进行管理。 本系统主要通过使用Java语言编码设计系统功能,MySQL数据库管理数据,AJAX技术设计简洁的、友好的网址页面,然后在IDEA开发平台中,编写相关的Java代码文件,接着通过连接语言完成与数据库的搭建工作,再通过平台提供的Tomcat插件完成信息的交互,最后在浏览器中打开系统网址便可使用本系统。本系统的使用角色可以被分为用户和管理员,用户具有注册、查看信息、留言信息等功能,管理员具有修改用户信息,发布寻物启事等功能。 管理员可以选择任一浏览器打开网址,输入信息无误后,以管理员的身份行使相关的管理权限。管理员可以通过选择失物招领管理,管理相关的失物招领信息记录,比如进行查看失物招领信息标题,修改失物招领信息来源等操作。管理员可以通过选择公告管理,管理相关的公告信息记录,比如进行查看公告详情,删除错误的公告信息,发布公告等操作。管理员可以通过选择公告类型管理,管理相关的公告类型信息,比如查看所有公告类型,删除无用公告类型,修改公告类型,添加公告类型等操作。寻物启事管理页面,此页面提供给管理员的功能有:新增寻物启事,修改寻物启事,删除寻物启事。物品类型管理页面,此页面提供给管理员的功能有:新增物品类型,修改物品类型,删除物品类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值