2.1算法的概念 ☆做任何事情都有一定的步骤。这些步骤都是按 定的顺序进行的,缺一不可,次序错了也不行 令对同一个问题,可以有不同的解题方法和步骤 令例如,求1+2+3+..+100 令计算机算法可分为两大类别: ◆数值运算算法:数值运算的目的是求数值解,例如 求方程的根,求一个函数的定积分等,都属于数值 运算范围 令非数值运算算法。最常见的是用于事务管理领域, 例如图书检索、人事管理、行车调度管理等。 上一页下一页 返回
上一页 下一页 返回 第2章 程序的灵魂—算法 计算机系彭金莲制作 2.1 算法的概念 ❖ 做任何事情都有一定的步骤。这些步骤都是按一 定的顺序进行的,缺一不可,次序错了也不行。 ❖ 对同一个问题,可以有不同的解题方法和步骤。 ❖ 例如,求1+2+3+…+100 ❖ 计算机算法可分为两大类别: ❖ 数值运算算法:数值运算的目的是求数值解,例如 求方程的根,求一个函数的定积分等,都属于数值 运算范围。 ❖ 非数值运算算法。最常见的是用于事务管理领域, 例如图书检索、人事管理、行车调度管理等
2.2算法的举例 例2.1求1*2*3*4*5 可以用最原始的方法进行。 步骤1:先求1*2,得到结果2 步骤2:将步骤1得到的乘积2再乘以3,得到结果6 步骤3:将6再乘以4,得24 步骤4:将以再乘以5,得120。这就是最后的结果 令这样的算法虽然是正确的,但大繁琐。如果要求 1*2**1000,则要写999个步骤,显然是不可 取的。 上一页下一页 返回
上一页 下一页 返回 第2章 程序的灵魂—算法 计算机系彭金莲制作 2.2 算法的举例 ❖ 例 2.1 求1*2*3*4*5 ❖ 可以用最原始的方法进行。 ❖ 步骤1:先求1*2,得到结果2 ❖ 步骤 2:将步骤 1得到的乘积 2再乘以 3,得到结果 6。 ❖ 步骤3:将6再乘以4,得24。 ❖ 步骤4:将以再乘以5,得120。这就是最后的结果。 ❖ 这样的算法虽然是正确的,但大繁琐。如果要求 l* 2*… * 1000,则要写 999个步骤,显然是不可 取的
一种通用的表示方法 令可以设两个变量,一个变量代表被乘数,一个变量 代表乘数。不另设变量存放乘积结果,而直接将每 步骤的乘积放在被乘数变量中 令设p为被乘数,i为乘数。用循环算法来求结果。可 以将算法改写如下: & SI ● 使使使 p 1 S3:使p*i, 乘积仍放在变量P中,表示为 米 >p 令S4:使i的值加1,即i+1>i S5:如果i不大于5,返回重新执行步骤S3以及其后 的步骤S4和S5;否则,算法结束。最后得到P的值 就是5!的值。 上一页下一页 返回
上一页 下一页 返回 第2章 程序的灵魂—算法 计算机系彭金莲制作 一种通用的表示方法 ❖ 可以设两个变量,一个变量代表被乘数,一个变量 代表乘数。不另设变量存放乘积结果,而直接将每 一步骤的乘积放在被乘数变量中。 ❖ 设p为被乘数,i为乘数。用循环算法来求结果。可 以将算法改写如下: ❖ S1:使 p=1 ❖ S2:使 i=2 ❖ S3:使 p * i,乘积仍放在变量 P中,表示为 p * i=>p ❖ S4:使 i的值加 l,即 i+l>i ❖ S5:如果i不大于5,返回重新执行步骤S3以及其后 的步骤S4和S5;否则,算法结束。最后得到P的值 就是5!的值
F求1米3米5米7米9*11 算法只需作很少的改动即可: ☆S1 S2:i3 P-p 今S4:i=i+2 S5:若<11,返回S3: 否则,结束。 算法具有通用性、灵活性。S3到S5组成一个循环,在实 现算法时,要反复多次执行S3S4S5等步骤,直到某一时 刻,执行S5步骤时经过判断,乘数i超过规定的数值而 不返回S3步骤为止。此时算法结束,变量P的值就是所求 结果 上一页下一页 返回
上一页 下一页 返回 第2章 程序的灵魂—算法 计算机系彭金莲制作 求1*3*5*7*9*11 ❖ 算法只需作很少的改动即可: ❖ S1:p=1 ❖ S2:i=3 ❖ S3:p=p * i ❖ S4:i=i + 2 ❖ S5:若i<11,返回S3; 否则,结束。 ❖ 算法具有通用性、灵活性。S3到S5组成一个循环,在实 现算法时,要反复多次执行S3,S4,S5等步骤,直到某一时 刻,执行S5步骤时经过判断,乘数i已超过规定的数值而 不返回S3步骤为止。此时算法结束,变量P的值就是所求 结果
例2.2 有50个学生,要求将他们之中成绩在80分以上者 打印出来。用n表示学生学号,n1代表第一个学生 学号,n代表第个学生学号。用g代表学生成绩, g代表第i个学生成绩,算法可表示如下 S1:i=1 S2:如果g=80,则打印和g,否则不打印 S3: j=i+l 令S4:如果i<=50,返回S2,继续执行; 否则,算法结束 上一页下一页 返回
上一页 下一页 返回 第2章 程序的灵魂—算法 计算机系彭金莲制作 例 2.2 ❖ 有50个学生,要求将他们之中成绩在80分以上者 打印出来。用n表示学生学号,n1代表第一个学生 学号,ni代表第i个学生学号。用g代表学生成绩, gi代表第i个学生成绩,算法可表示如下。 ❖ S1: i=1 ❖ S2:如果gi >=80,则打印ni和gi,否则不打印 ❖ S3: i=i+l ❖ S4:如果 i<=50,返回 S2,继续执行; 否则,算法结束