数据结构与算法分析幻灯片.ppt
《数据结构与算法分析幻灯片.ppt》由会员分享,可在线阅读,更多相关《数据结构与算法分析幻灯片.ppt(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构与算法分析数据结构与算法分析第1页,共23页,编辑于2022年,星期六4.1 4.1 多维数组多维数组 4.1.1 数组定义数组定义 数组是数据结构的基本结构形式,它是一种顺序式的结构,数组是存储同一类型数据的数据结构,使用数组时需要定义数组的大小和存储数据的数据类型,数组分为一维数组和多维数组。数组的维数是由数组的下标的个数确定的,一个下标称为一维数组,一个下标以上的数组称为多维数组。从这个意义上讲,确定了对于数组的一个下标总有一个相应的数值与之对应的关系;或者说数组是有限个同类型数据元素组成的序列。数组的基本操作包括:initarray(&A);/初始化数组destroyarray
2、(&A);/销毁数组assign(&A,e);/数组赋值value(A,&e);/取数组的某个元素 copyarray(M,&T);/复制一个数组printarray(M);/打印数组的元素 第2页,共23页,编辑于2022年,星期六4.1 4.1 多维数组多维数组4.1.1 数组定义数组定义一维数组一维数组一维数组是指下标的个数只有一个的数组,一维数组是指下标的个数只有一个的数组,有时称为向量,是最基本的数据类型,在有时称为向量,是最基本的数据类型,在java 中需要事先声名,程序才能够在编译中需要事先声名,程序才能够在编译过程中预留内存空间。声明的格式一般是:过程中预留内存空间。声明的格式
3、一般是:=new ;第3页,共23页,编辑于2022年,星期六4.1 4.1 多维数组多维数组4.1.1 数组定义数组定义多维数组多维数组多维数组是指下标的个数有两个以上,我们多维数组是指下标的个数有两个以上,我们比较常用的是二维数组(因为三维以上的数比较常用的是二维数组(因为三维以上的数组存储可以简化为二维数组的存储)。下面组存储可以简化为二维数组的存储)。下面以二维数组为例说明多维数组。二维数组的以二维数组为例说明多维数组。二维数组的声明同一维数组。格式为:声明同一维数组。格式为:=new size1 size2;第4页,共23页,编辑于2022年,星期六4.1 4.1 多维数组多维数组4
4、.1.2 数组的存储数组的存储一维数组的存储一维数组的数据存储按照顺序存储,逻辑地址和物理地址都是连续的。如果已知第一个数据元素的地址loc(a1),则第i个元素的地址loc(ai)为:loc(ai)=loc(a1)+(i-1)*c假设数组的下标从1开始,只要求出第i个元素之前存放了多少个数据元素即可(实际上有i-1个元素),每个元素占有c个存储单元,再乘以c,就是第i个元素的起始地址。如果下标从0开始,则第i个元素之前就有i个元素,此时上面的公式就变为:loc(ai)=loc(a1)+i*c由此可见,求数组中数据元素的地址,已知条件必须是知道第一个元素的地址,然后主要是找出该元素之前已经存储
5、了多少个数据元素。在一维数组中,只要知道任何一个元素的地址即可求出其它元素的地址,但在多维数组中,已知条件必须是第一个数据元素地址。第5页,共23页,编辑于2022年,星期六4.1 4.1 多维数组多维数组4.1.2 数组的存储数组的存储多维数组以二维数组的顺序存储为例说明,二维数组在顺序存储时一般有两种:行优先顺序:存储时先按行从小到大的顺序存储,在每一行中按列号从小到大存储。列优先顺序:存储时先按列从小到大的顺序存储,在每一列中按行号从小到大存储。以上的两种存储顺序中,第一个被存放的元素总是第一行第一列的数据元素,所以该元素的地址是我们的已知条件。同样在二维数组中比较典型的是计算数据的存储
6、位置。第6页,共23页,编辑于2022年,星期六4.1 4.1 多维数组多维数组4.1.2 数组的存储数组的存储多维数组假设二维数组是m*n的二维数组(共有m行,每行有n列)。第一个数据元素的地址是loc(a11),则第i行第j列的数据元素的地址的计算公式应为(按照行优先顺序存储):loc(aij)=loc(a11)+(i-1)*n+j-1*c假设下标从1开始,我们需要计算出i行前面已经存储了i-1行元素,每行有n个元素,共有(i-1)*n个数据元素,在第i行元素中,j列之前有j-1个数据元素,共有(i-1)*n+j-1个元素,每个元素占有c个存储单元,只要乘以c就可以了。其中loc(aij)
7、表示第i 行第j列数据元素的内存的起始位置,loc(a11)表示第一个数据元素的内存位置,c表示每个数据元素所占有的内存空间的大小,如果下标从0开始,只要不用减1即可。第7页,共23页,编辑于2022年,星期六4.1 4.1 多维数组多维数组4.1.2 数组的存储数组的存储多维数组如果按列优先顺序存储,则地址的计算为:loc(aij)=loc(a11)+(j-1)*m+i-1*c假设下标从1开始,其中loc(aij)表示第i 行第j列的数据元素的内存起始位置,loc(a11)表示第一个数据元素的内存位置,c表示每个数据元素所占有的内存空间的大小;主要还是计算第i行j列元素之前有多少个数据元素。
8、如果下标从0开始,只要不用减1即可。按此公式可以推广到多维数组的数据元素的地址计算(假设按照行优先顺序存储):m行n 列纵标为k的三维数组,假设第一个元素的地址是loc(a111),如果按行优先顺序存储,i行j列纵标为p的数据元素的地址为(可以将它分解为二维数组):loc(aijp)=loc(a111)+(i-1)*n*k+(j-1)*k+p-1*c;如果下标从0开始,只要不用减1即可。读者可以从以上的地址公式中可以找出一定的地址计算规律:多维数组中按行优先计算公式用一个下标乘以后面的最大值。第8页,共23页,编辑于2022年,星期六4.1 4.1 多维数组多维数组4.1.3 显示二维数组的内
9、容显示二维数组的内容一般情况下,只要定义了数组的存储顺序,一般情况下,只要定义了数组的存储顺序,数组的存储顺序就不会改变了,所以对数组数组的存储顺序就不会改变了,所以对数组的各种操作后,应按照数组的已定义的存储的各种操作后,应按照数组的已定义的存储顺序存储;也就是说,如果是按行优先顺序顺序存储;也就是说,如果是按行优先顺序存储,在对数组操作后,即使改变了存储顺存储,在对数组操作后,即使改变了存储顺序,应加以改变仍然按照行优先顺序存储。序,应加以改变仍然按照行优先顺序存储。第9页,共23页,编辑于2022年,星期六4.2 4.2 矩阵的压缩存储矩阵的压缩存储 4.2.1 矩阵的压缩存储矩阵的压缩
10、存储所谓矩阵的压缩存储,也就是在存储数组时,尽量减所谓矩阵的压缩存储,也就是在存储数组时,尽量减少存储空间,但是数组中的每个元素必须存储,所以少存储空间,但是数组中的每个元素必须存储,所以在矩阵存储中,如果有规律可寻,只要存储其中一部在矩阵存储中,如果有规律可寻,只要存储其中一部分,而另一部分的存储地址可以通过相应的算法将它分,而另一部分的存储地址可以通过相应的算法将它计算出来,从而占有比较少的存储空间达到存储整个计算出来,从而占有比较少的存储空间达到存储整个矩阵的目的,称为矩阵的压缩存储。矩阵的目的,称为矩阵的压缩存储。矩阵的压缩存储仅是针对特殊矩阵的;而对于没有规矩阵的压缩存储仅是针对特殊
11、矩阵的;而对于没有规律可循的二维数组则不能够使用压缩存储。律可循的二维数组则不能够使用压缩存储。二维数组(矩阵)的压缩存储一般有三种,它们分别二维数组(矩阵)的压缩存储一般有三种,它们分别是对称矩阵、稀疏矩阵和三角矩阵。三种矩阵中以稀是对称矩阵、稀疏矩阵和三角矩阵。三种矩阵中以稀疏矩阵比较常见。疏矩阵比较常见。第10页,共23页,编辑于2022年,星期六4.2 4.2 矩阵的压缩存储矩阵的压缩存储 4.2.1 矩阵的压缩存储矩阵的压缩存储特殊矩阵特殊矩阵若若n 阶矩阵阶矩阵A中的元素满足以下条件:中的元素满足以下条件:aij=aji i1,j1则称为则称为n阶对称矩阵。阶对称矩阵。对于对称矩阵
12、,如果不采用压缩存储,占有的存储单对于对称矩阵,如果不采用压缩存储,占有的存储单元有元有n2个,因为是对称矩阵,所以只要存储对角的数个,因为是对称矩阵,所以只要存储对角的数据元素和一半的数据元素即可,占有的存储单元有据元素和一半的数据元素即可,占有的存储单元有n(n-1)/2个存储单元中。如果我们以行序为主序存个存储单元中。如果我们以行序为主序存储其下三角(包括对角线)的元素,其上三角的元素储其下三角(包括对角线)的元素,其上三角的元素可以推算出来。可以推算出来。第11页,共23页,编辑于2022年,星期六4.2 4.2 矩阵的压缩存储矩阵的压缩存储 4.2.1 矩阵的压缩存储矩阵的压缩存储特
13、殊矩阵特殊矩阵如果用一维数组存储一个对称矩阵,只要将如果用一维数组存储一个对称矩阵,只要将对称矩阵存储在一个最大下标为对称矩阵存储在一个最大下标为n(n-1)/2的一维数组的一维数组S中即可。此时按照行优中即可。此时按照行优先顺序存储,数据元素先顺序存储,数据元素aij与数组与数组S的下标的下标k的对应关系为:的对应关系为:i(i-1)/2+j-1 当当ij时时 k=j(j-1)/2+i-1 当当ij时时第12页,共23页,编辑于2022年,星期六4.2 4.2 矩阵的压缩存储矩阵的压缩存储 4.2.1 矩阵的压缩存储矩阵的压缩存储特殊矩阵特殊矩阵对于任意给定的一组下标(对于任意给定的一组下标
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 算法 分析 幻灯片
限制150内