第四章 数组、串与广义表教学课件_第1页
第四章 数组、串与广义表教学课件_第2页
第四章 数组、串与广义表教学课件_第3页
第四章 数组、串与广义表教学课件_第4页
第四章 数组、串与广义表教学课件_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章数组、串与广义表本章主要内容多维数组的概念与存储特殊矩阵稀疏矩阵字符串2多维数组的概念与存储多维数组是一维数组的扩展3二维数组三维数组多维数组的概念与存储多维数组存储在连续的空间中存储地址计算方法(假设数组首地址为a,元素大小为l)一维数组:a[m1]二维数组:a[m1][m2]三维数组:a[m1][m2][m3]n维数组:a[m1][m2]…[mn]4Loc(i)=a+i*lLoc(i,j)=a+(i*m2+j)*lLoc(i,j,k)=a+(i*m2*m3+j*m3+k)*l特殊矩阵二维数组也称为矩阵特殊矩阵是指非零元素或零元素的分布有一定规律的矩阵。对称矩阵三对角矩阵利用特殊矩阵的性质,节省存储空间5对称矩阵三对角矩阵特殊矩阵对称矩阵的压缩存储设有一个n

n的矩阵A。如果在在矩阵中,aij=aji,则此矩阵是对称矩阵。只保存对称矩阵的对角线和对角线以上(或以下)的元素,则称此为对称矩阵的压缩存储压缩存储方式:用一维数组存储6特殊矩阵对称矩阵的压缩存储下三角阵存储:用一维数组B存储对称矩阵A中对角线及对角线以下的元素矩阵A中元素a[i][j]对应一维数组B中的下标为7(i+1)*i/2+j,i≥jLoc(i,j)=(j+1)*j/2+i,i<ja00a10a11a20a21a22a30a31a32……

an-1n-1

012345678n(n+1)/2-1B特殊矩阵对称矩阵的压缩存储上三角阵存储:用一维数组B存储对称矩阵A中对角线及对角线以上的元素矩阵A中元素a[i][j]对应一维数组B中的下标为8(2n-i+1)*i/2+j-i,i≤j(2n-j-1)*j/2+i,i>jLoc(i,j)=a00a01a02…

a0n-1a11a12…

a1n-1a22…

an-1n-1

012n-1nn+12n-22n-1n(n+1)/2-1B稀疏矩阵设矩阵A中有s个非零元素,若s远远小于矩阵元素的总数(即s<<m×n),则称A为稀疏矩阵。稀疏因子:

δ=s/(m×n)一般δ

≤0.05可称为稀疏9稀疏矩阵表示稀疏矩阵用三元组(i,j,aij)表示稀疏矩阵一个元素aij10三元组表示稀疏矩阵表示稀疏矩阵三元组表示的稀疏矩阵转置的直观方法按列从小到大排序行列交换11稀疏矩阵三元组表示的稀疏矩阵转置的扫描方法假设A有Cols列,则扫描Cols趟第k趟扫描在表中找列号为k的三元组,取出,交换行列号12扫描列号为0的三元组扫描列号为1的三元组扫描列号为2的三元组扫描列号为3的三元组扫描列号为4的三元组扫描列号为5的三元组扫描列号为6的三元组65-5253-17441935-832-631-11202149013稀疏矩阵三元组表示的稀疏矩阵转置的快速方法统计各列非零数rowSize(扫描三元组表)计算各列在转置三元组中的索引位置rowStart扫描三元组表,放入相应索引位置,相应索引加1rowSize1113111rowStart012367865-5253-17441935-832-631-11202149013453216789字符串字符串n(n≥0)个字符的一个有限序列,简称为串记为S=“a0

a1

a2…an-1”n是串的长度,n等于0的串叫空串子串串中连续若干个字符组成的串S=“maintenance”,P=“ten”是S的子串,P在S中的位置为4(从第0个字符开始)14字符串字符串的一些基本操作复制strcpy连接strcat比较strcmp长度strlen15typedefstruct{charch[maxSize];intlength;}SeqString;字符串字符串的穷举模式匹配算法匹配失败时,目标串T回溯,模式串P从头开始16PTp2p3…pm-3pm-2pm-1p1p0t2t3…tm-3tm-2tm-1…t1t0tn-1p2p3…pm-3pm-2pm-1p1p0p2p3…pm-3pm-2pm-1p1p0PP第1趟第2趟第3趟…时间复杂度O(m*n)…字符串字符串的穷举模式匹配算法匹配失败时,目标串T回溯,模式串P从头开始17PT≠abaababbaPT≠abaababbaPT≠abaababbaPTabaababba第1趟第2趟第3趟第4趟字符串字符串的改进模式匹配算法18PT≠Pcdabcdbaecdabcdbae例子:P中重复出现abcd,但是e和x不匹配时,可直接向右滑动4个字符开始匹配,可少匹配4趟cdabcdba…x…字符串字符串的改进模式匹配算法19PTp2p3…pj-3pj-2pj-1pjp1p0ts+2ts+3…ts+j-3ts+j-2ts+j-1ts+jts+1ts……≠========p2p3…pj-3pj-2p1p0p2p3…pj-3p1p0设T[s,s+j-1]=P[0,j-1],但T[s,s+j]≠P[0,j]PP若P[0,j-2]≠P[1,j-1],可少匹配1趟若又P[0,j-3]≠P[2,j-1],可少匹配2趟p2…pj-4p1p0P若又P[0,j-4]≠P[3,j-1],可少匹配3趟……类推直到前缀P[0,k+1]≠

后缀P[j-k-2,j-1]但是前缀P[0,k]=后缀P[j-k-1,j-1]时,可少匹配j-k-1趟,相当于P直接向右滑动j-k-1个字符字符串字符串的改进模式匹配算法对模式串P进行预处理,计算可以滑过多少个字符20-1,当

j=

0k+1,当

0≤k<j-1,且使p0p1…pk=pj-k-1pj-k…pj-1的最大数next(j)=0,其他情况Pcdabcdbae下标j234567108next(j)0001230-14next(j)直观含义:[0,j-1]中前缀和后缀相等的最大长度next(j)直观作用:可滑过j-next(j)位不用匹配字符串字符串的改进模式匹配算法对模式串P进行预处理,计算可以滑过多少个字符21-1,当

j=

0k+1,当

0≤k<j-1,且使p0p1…pk=pj-k-1pj-k…pj-1的最大数next(j)=0,其他情况PT≠Pcdabcdbaecdabcdbaecb……next(j)=-1表示匹配失败时,T的指针加1,P的指针指向p[0]next(j)=k+1表示匹配失败时,P的指针指向p[k+1],next(j)=0表示匹配失败时,P的指针指向p[0]此例中模式串P的next[0]=-1,T指针加1,P指向p[0],即T中c与P中p[0]=a进行比较字符串字符串的改进模式匹配算法对模式串P进行预处理,计算可以滑过多少个字符22-1,当

j=

0k+1,当

0≤k<j-1,且使p0p1…pk=pj-k-1pj-k…pj-1的最大数next(j)=0,其他情况PT≠Pcdabcdbaecdabcdbaecdabcdba…x…next(j)=-1表示匹配失败时,T的指针加1,P的指针指向p[0]next(j)=k+1表示匹配失败时,P的指针指向p[k+1],next(j)=0表示匹配失败时,P的指针指向p[0]此例中模式串P的next[8]=4,T中x直接与P中p[4]=a比较字符串字符串的改进模式匹配算法对模式串P进行预处理,计算可以滑过多少个字符23-1,当

j=

0k+1,当

0≤k<j-1,且使p0p1…pk=pj-k-1pj-k…pj-1的最大数next(j)=0,其他情况PT≠Pcdabcdbaecdabcdbaecxba……next(j)=-1表示匹配失败时,T的指针加1,P的指针指向p[0]next(j)=k+1表示匹配失败时,P的指针指向p[k+1],next(j)=0表示匹配失败时,P的指针指向p[0]此例中模式串P的next[3]=0,T中x直接与P中p[0]=a比较字符串字符串的改进模式匹配算法对模式串P进行预处理,计算可以滑过多少个字符24-1,当

j=

0k+1,当

0≤k<j-1,且使p0p1…pk=pj-k-1pj-k…pj-1的最大数next(j)=0,其他情况可按定义直接计算next,下面介绍一种快速的计算next的方法假设已知next(j)=x,现在计算next(j+1)若px=pj,则next(j+1)=x+1=next(j)+1否则,设next(x)=h,(此时有p[0,h-1]=p[x-h,x-1]=p[j-h,j-1])

若ph=pj,则next(j+1)=h+1

否则,令next(h)=t,(此时有p[0,t-1]=p[h-t,h-1]=p[j-t,j-1])

继续判断是否pt=pj,直到找到或者到next(0)=-1……j=0;k=-1;next[0]=-1;while(j<pLength){if(k==-1||ch[j]==ch[k]){j++;k++;next[j]=k;}elsek=next[k];}字符串字符串的改进模式匹配算法对模式串P进行预处理,计算可以滑过多少个字符25-1,当

j=

0k+1,当

0≤k<j-1,且使p0p1…pk=pj-k-1pj-k…pj-1的最大数next(j)=0,其他情况可按定义直接计算next,下面介绍一种快速的计算next的方法j=0;k=-1;next[0]=-1;while(j<pLength){if(k==-1||ch[j]==ch[k]){j++;k++;next[j]=k;}elsek

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论