衡量算法的性能指标:时间复杂度、空间复杂度。
时间复杂度一般利用Big-O计数法,只要取其高次方即可。
时间复杂度的排序为O(1)《O(log2(n))<O(n)<O(nlog(n))<O(n平方)<O(n立方)<O(2的n次方)<O(n的阶乘)<O(n的N次方)
在java中线性表是利用数组来实现(ArayList);
1,矩阵相乘的代码
/** * 下面代码实现矩阵的相乘 */ public static int[][] productMetrics(int[][] a,int[][] b){ int rowNum=a.length; int columnNum=b[0].length; int sum; if(a[0].length!=b.length){ return null; } int[][] c=new int[rowNum][columnNum]; for(int i=0;i<a.length;i++){ for(int j=0;j<b[0].length;j++) { sum=0; for(int k=0;k<a[0].length;k++){ sum+=a[i][k]*b[k][j]; } c[i][j]=sum; } } return c; }
2,稀疏矩阵的存储
一般而言,如果矩阵中有超过半数的元素为0那么这个矩阵就可以称之为稀疏矩阵,可以采用A(i,j,value)的方法存储为A(0:n,1:3)的形式来存储,其中n为原来矩阵中非0元素的个数。A(0,0)可以存储行数,A(0,1)可以存储列数,A(0,2)可以存储非0元素的个数。
3,多项式表示法
如果是只有一个变量的n次多项式,可以利用一个n+1的一维数组存储,若其中有M个非0元素,可以用(2m+1)个一维数组存储。此时只是存储非0项的次数和系数。