时间复杂度和算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四.分析下面各程序段的时间复杂度(1)for (i=0;i for (j=0;j A[i][j] 解: O(n*m) (2) s=0; for (i=0;i for (j=0;j s+=B[i][j]; sum=s; 解: O(n2) (3) T=A; A=B; B=T; 解:O(1) (4) s1(int n) { int p=1,s=0; for (i=1;i<=n;i++) { p*=i;s+=p; } return(s); } O(n) (5) s2(int n) x=0; y=0; for (k=1;k<=n;k++) x++; for (i=1;i<=n;i++) for (j=1;j<=n;j++) y++; 解:O(n2) 四.分析下述算法的功能 (1)(2)ListNode *Demo1(LinkList L,ListNode *p) { // L是有头结点的单链表 ListNode *q=L->next; While (q && q->next!=p) q=q->next; if (q) return q; else Error(“*p not in L”); } void Demo2(ListNode *p,ListNode *q) { // p,*q是链表中的两个结点 DataType temp; temp=p->data; p->data=q->data; q->data=temp; } 解: (1)返回结点*p的直接前趋结点地址。 (2)交换结点*p和结点*q(p和q的值不变)。