正在加载图片...
求五个数的最大值,我们用了五行话表达,如果求100个数的最值呢?要比较99次,岂不 是要写100行?按照它的表达,我们写成的代码是: intn[5]={2,3,1,4,0} int N=n[0]: if(N>n[1]) N=n[1 if(N>n[2]) if(N>n[3]) N=n[3] f(N>n[4]) N=n[4] 这可不叫“算法”。所以前面的表达并没有说出真正的算法。我们要改进它。 1、首先假设第一个数就是最大值,则N=2; 2、把N和下一个数比较,如果下一个数比N大,则让N等于该数 3、重复第二步,直到没有下一个数。 明白了吗?算法就是这样而来的。第一,这三行话可以适用于无论多少个数求最大值的情况, 这是你的算法是否正确的一个必要条件,如果你的算法表达的长短依赖于具体数据的个数,那 么你的算法不是通用的算法,不管是否能解决问题。第二,我们在表达中看到了“如果”,看 到“重复”,很好,“如果”就是“分支流程”,就是if或 switch:而“重复”就是“循环 流程”,是for或 while或do.. while intn[5]={2,3,1,4,0}求五个数的最大值,我们用了五行话表达,如果求 100 个数的最值呢?要比较 99 次,岂不 是要写 100 行?按照它的表达,我们写成的代码是: int n[5] = {2,3,1,4,0}; int N = n[0]; if(N > n[1]) N = n[1]; if(N > n[2]) N = n[2]; if(N > n[3]) N = n[3]; if(N > n[4]) N = n[4]; 这可不叫“算法”。所以前面的表达并没有说出真正的算法。我们要改进它。 1、首先假设第一个数就是最大值,则 N = 2; 2、把 N 和下一个数比较,如果下一个数比 N 大,则让 N 等于该数; 3、重复第二步,直到没有下一个数。 明白了吗?算法就是这样而来的。第一,这三行话可以适用于无论多少个数求最大值的情况, 这是你的算法是否正确的一个必要条件,如果你的算法表达的长短依赖于具体数据的个数,那 么你的算法不是通用的算法,不管是否能解决问题。第二,我们在表达中看到了“如果”,看 到“重复”,很好,“如果”就是“分支流程”,就是 if 或 switch;而“重复”就是“循环 流程”,是 for 或 while 或 do...while。 int n[5] = {2,3,1,4,0};
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有