时间复杂度和算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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的值不变)。

相关文档
最新文档