数据结构中频度怎样判断
前面省略,for(i=1;i<=n;i++)(1){for(j=1;j<=n;j++)(2){x=0;(3)for(k=0;k<=n;k++)(4)x+=a[i][k]*...
前面省略,for(i=1;i<=n;i++) (1)
{
for(j=1;j<=n;j++) (2)
{
x=0; (3)
for(k=0;k<=n;k++) (4)
x+=a[i][k]*b[k][j]; (5)
c[i][j]=x; (6)
}
他们频度为:(1)n+1 ; (2)n(n+1); (3)n*n;(4) n*n(n+1); (5)n的三次方(6)N的平方;
我的问题是步骤四为什么不是n*n(n+2) ?我理由是判断N+1后最后在判断一次退出循环!所以是这样! 展开
{
for(j=1;j<=n;j++) (2)
{
x=0; (3)
for(k=0;k<=n;k++) (4)
x+=a[i][k]*b[k][j]; (5)
c[i][j]=x; (6)
}
他们频度为:(1)n+1 ; (2)n(n+1); (3)n*n;(4) n*n(n+1); (5)n的三次方(6)N的平方;
我的问题是步骤四为什么不是n*n(n+2) ?我理由是判断N+1后最后在判断一次退出循环!所以是这样! 展开
展开全部
啊
========================================
因为到n的时候,虽然已经不符合i<n了,但计算机要判断出这个仍需一次时间(当然判断出这个以后,后面的语句就不用执行了,所以/2/的频度是n),所以是n+1。
/2/ 前面/1/括号里已说明。从0到n-1,总共执行了(n-1)-0+1次。
/3/ 如果单独拿出这个内圈循环,频度为2*n-0+1+1。(注意是<=)再考虑外圈循环,相当于执行了n次的2*n-0+1+1,所以为n*(2*n+2)。
/4/ 同理1和2。内圈执行了2*n-0+1次,考虑外圈循环,则是n*(2*n+1)。
========================================
因为到n的时候,虽然已经不符合i<n了,但计算机要判断出这个仍需一次时间(当然判断出这个以后,后面的语句就不用执行了,所以/2/的频度是n),所以是n+1。
/2/ 前面/1/括号里已说明。从0到n-1,总共执行了(n-1)-0+1次。
/3/ 如果单独拿出这个内圈循环,频度为2*n-0+1+1。(注意是<=)再考虑外圈循环,相当于执行了n次的2*n-0+1+1,所以为n*(2*n+2)。
/4/ 同理1和2。内圈执行了2*n-0+1次,考虑外圈循环,则是n*(2*n+1)。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询