C语言的算法描述是什么?

C语言的算法描述是什么?,第1张

1、算法描述就是用伪代码或其他文字来叙述编程思想,包含内部逻辑,数据流处理等。

2、算法(Algorithm)是指完成一个任务所需要的具体步骤和方法。也就是说给定初始状态或输入数据,能够得出所要求或期望的终止状态或输出数据。算法常常含有重复的步骤和一些比较或逻辑判断。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。

c语言中的算法是指:一系列解决问题的清晰指令,用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。通俗说就是解决问题的方法和步骤。

描述算法的例子:

问题:从上海去到北京。

其中的算法:做汽车、做飞机、或者徒步。

问题:喝茶。

其中的算法:先找到茶叶,再烧一壶开水,然后将茶叶放到杯子里,将开水倒入杯中,等茶叶泡好。

问题:开车。

其中的算法:首先要打开车门,驾驶员坐好,插上车钥匙,发动汽车。

算法的五个重要的特征:有穷性(Finiteness)、确切性(Definiteness)、输入项(Input)、输出项(Output)、可行性(Effectiveness)。

算法的时间复杂度:算法的时间复杂度是指执行算法所需要的计算工作量。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做。T(n)=Ο(f(n))因此,问题的规模n 越大,算法执行的时间的增长率与f(n) 的增长率正相关,称作渐进时间复杂度(Asymptotic Time Complexity)。

算法的空间复杂度:算法的空间复杂度是指算法需要消耗的内存空间。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。可以从正确性、可读性、健壮性(容错性)来分析。

/*Bezier曲线的Casteljau算法*/

float decas(degree,codff,t)

float coeff[]

float t

int degree

{

int r,i

float t1

float codffa[10]

t1=1.0-t

for(i=0i<=degreei++)

coeffa[i]=coeff[i]

for(r=1r<degreer++)

for(i=0i<=degree-ri++)

{

coeffa[i]=t1*coeffa[i]+t*coeffa[i+1]

}

return (coeffa[0])

}

/*B样条曲线—deBoor分割算法*/

float deboor(degree,coeff,knot,u,i)

float coeff[],knot[]

float u

int degree,i

{

int k,j

float t1,t2

float coeffa[30]

for(j=i-degree+1j<=i+1j++)

coeffa[j]=coeff[j-i+degree-1]

for(k=1i<=degreek++)

forj=i+1j>=i-degree+k+1j--)

{

t1=(knot[j+degree-k]-u)/(knot[j+degree-k]-knot[j-1])

t2=1.0-t1

coeffa[j]=t1*coeffa[j-1]+t2*coeffa[j]

}

return (coeffa[i+1])

}

/*Bezier曲线的Horner算法*/

float hornbez(degree,coeff,t)

int degree

float coff[]

float t

{

int i,n

float fact,t1,aux

t1=1.0-tfact=1.0n=1

aux=coeff[0]*t1

for(i=1i<degreei++)

{

face=fact*t

n=n*(degree-i+1)/i

aux=(aux+fact*n*coeff[i])*t1

}

aux=aux+fact*t*codff[degree]

return aux

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11837001.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存