标签:return 简便 优点 技术分享 数组 图片 bsp inf 最大值
给定一个数组,求数组中的最大值。
用假设法可解,思路是,把数组中随便一个元素设置为最大值,然后让其它元素和它比,如果比当前最大值大,那么最大值就被设置为这个元素,这个过程有点类似打擂台,共有N个人打擂台,其中一个人说,我是最厉害的,然后后面一个人把他打败了,它就编程最大的了,前面就被淘汰了,擂台上始终是当前最厉害的,那么最后留在擂台上的就是最厉害的。
想出假设法的人真的很聪明啊,我怎么想不到呢?
假设是4个整型变量,那么有以下代码
int a,b,c,d
int max=a;
if(b>=max)
max=b;
if(c>=max)
max=c;
if(d>=max)
max=d;
发现没有,这三段if代码很相似,但似乎不会有简便的办法了。
如果把这四个变量放到数组中,那么我们可能会写出这样的代码:
int main(void) { int num[] = { 35,34,67,67}; int max = num[3]; if (num[0] >= max) { max = num[0]; } if (num[1] >= max) { max = num[1]; } if (num[2] >= max) { max = num[2]; } if (num[3] >= max) { max = num[3]; } printf("max=%d",max); return 1; }
可以发现几段if代码就是数组索引不一样,其它地方都一样,如下图:
数组索引是一个常数,我们可以用一个变量i来代替它,然后让i的值从0开始,每次加1这样变化,for循环正是有这样的功能。
于是代码可以被优化成下面这样。
int main(void) { int num[] = { 35,34,67,67}; int max = num[3]; for (int i = 0; i <= 3; i++) { if (num[i] >= max) { max = num[i]; } } printf("max=%d",max); return 1; }
数组从某些角度讲有优化代码的功能。
标签:return 简便 优点 技术分享 数组 图片 bsp inf 最大值
原文地址:https://www.cnblogs.com/yfish/p/9807235.html