天天看点

<算法设计方法与优化> || 求值法

求值法中的几种典型例题

    • **- 求最大值**
    • **-判断闰年**
    • 素数

- 求最大值

  1. main()方法主要负责输出算法。
  2. 在这个方法中,主要使用的是算法结构中的顺序结构

    如果在比较最大值和最小值的时候可以灵活运用三目运算符号:

    <表达式1>?<表达式2>:<表达式3>
    
    例子
    int maxumum(int x,int y,int z)
    {
    	return(x>y&&x>z)?x:((x<y&&y>z)?y:z)
    }
    
    ps:
    先求表达式1的值,如果为真,则执行表达式2,并返回表达式2的结果;
    如果表达式1的值为假,则执行表达式3,并返回表达式3的结果。嵌套使用三目运算符,快速求出
    最大值或者最小值
               

-判断闰年

问题分析:

闰年的判断条件是:

(1)能被4整除,而不能被100整除的年份;

(2)能被400整除的年份

类型 名称 代表的含义
算法 leap(int year) 判断year是否为闰年
形式参数变量 year 需要判断的年份
变量 result 用判断是否为闰年的标致量

直接上算法优化:

int leap(int year)
{
	int result;
	if((year%4==0&&year%100!=0||year&&400=0)
		result=1;
	else
		result=0;
	return(result);
}
           

👆逻辑运算从左到右,在这种多个值作判断的程序里需要善用“与”、“或”、“非”运算来提高效率和代码整洁度。

素数

问题分析:

(1)素数是指在一个大于1的自然数中,除了1和它本身之外,不能被其他自然数整除的数。

直接算法优化:

#include "math.h"
int isprime(int m)
{
	int i;
	for(i=2;i<sqrt(m);i++;
		if(m%i==0)
			return 0;
		return 1;
}
           

这个优化即除数只需要从2到给定整数的算术平方根即可。因为数不是素数一定可以由两个数相乘得到。

继续阅读