两个多项式相乘时间复杂度的怎么算,请给出详细过程
#include#include#include#include/*显示帮助信息*/voidhelp(){printf("\ \n");printf(" \n");exit(0);}/*显示错误信息*/voidprinterror(errno,num,base1)charerrno,*num,*base1;{switch(errno){case1:printf("\ (%s)isvalid!!!\n",num,base1);break;case2:printf("\ (%s)isinvalid!!!\n%s\n",base1," >=2andradix36))printerror(2,"",base1);/*有效吗?*/ibase2=atoi(base2);/*数基2*/if((ibase236))printerror(2,"",base2);/*有效吗?*/for(j=0;j=48)&&(num[j]10){/*求每个字母所代表的十进制值*/if((num[j]>=''A'')&&(num[j]=''a'')&&(num[j]<=m))k=num[j]-''a''+10;elseprinterror(1,num,base1);}elseprinterror(1,num,base1);inum+=k*(int)r;/*累加计算结果*/}/*输出转换结果*/printf("%s(%d)=%s(%d)\n",num,ibase1,ltoa(inum,temp,ibase2),ibase2);}/*主程序*/main(argc,argv)intargc;char*argv[];{staticcharnum[10],base1[10],base2[10];printf("(TNS)TranslatorofNumberSystem1。
0Copyright(c)1995DongZhanshan\n");switch(argc){case1:case2:case3:help();break;case4:strcpy(num,argv[1]);strcpy(base1,argv[2]);strcpy(base2,argv[3]);transnum(num,base1,base2);}。
。
不知道你是要问两个多项式相乘这个问题的时间复杂度
还是两个多项式时间复杂度的问题相乘得到的复杂度
如果是前者,那么和具体存储结构以及算法有关
如果是后者,那么就是二者的乘积,O(n2)*O(n2)=O(n4)
这是根据O(m)*O(n)=O(mn)得到的,很多算法分析的书上都有。
-----------------
建入链表的时间复杂度为O(n)
计算的时候,二重循环的时间复杂度为O(n^2)
输出建立链表的时间复杂度为O(n)
所以总的时间复杂度为O(n^2)
采用链表可以减少占用的空间,对改善时间复杂度没有作用
如果要改进时间复杂度,放到数组里面用FFT计算,其复杂度
为O(nlogn)。
。