sony往年程序笔试真题(2)

招聘笔试题2018-11-22李天扬老师

int i,j,k;

int temp;

for(i=0;i

{

k=i; //每次一趟结束后就从新的一个值开始,无需从头来,因为每一次排完后都是最大的了

for(j=i+1;j

if(array[k]

{

k=j;

}

if(k!=i) //如果k不等于i就说明有更大的值,交换二值

{

temp=array;

array=array[k];

array[k]=temp;

}

}

}

C、该题考查同学们对递归算法的认识程度,在这里我们采用迭代算法,优点是程序运行效率高,而且不用担心堆栈溢出,在运算值大的情况下比递归算法可以提高上万倍的速度,比如同样计算30,递归算法用时

0.019s,而迭代算法则只用了0.003s,可见是递归算法的八分之一,值更大时这种越明显。缺点是程序比较不容易懂。有兴趣的可以参见《C和指针》127页,具体程序如下:

递归法:

#include

int Pheponatch(int);

int main()

{

printf("The 10th is %d",Pheponatch(30));

return 0;

}

int Pheponatch(int N)

{

if(N<=2)

return 1;

return Pheponatch(N-1)+Pheponatch(N-2);

}

迭代法:

#include

int Pheponatch(int);

int main()

{

printf("The 10th is %d",Pheponatch(30));

return 0;

}

int Pheponatch(int n)

相关推荐

猜你喜欢

大家正在看

换一换