论文部分内容阅读
算法的初步知识,主要包括算法的基本思想,基本结构,基本语句等.学习中应从以前学过的典型实例中,分析其中蕴含的算法思想,体会算法通用化,机械化,程序化的特点以及对算法步骤“明确”“有效”“有限”的要求。
一.算法的基本思想.
(一)用自然语言描述算法的三个过程
1明确问题的性质,分析题意
2建立问题的描述模型
3设计确定算法
(二)相关概念及特征.
1算法的定义:
广义的算法是指完成某项工作的方法和步骤,那么我们可以说洗衣机的使用说明书是操作洗衣机的算法,菜谱是做菜的算法等等.
在数学中,现代意义的算法是指可以用计算机来解决的某一类问题的程序和步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步之内完成.
2算法的特征:
① 确定性:
算法的每一步都应当做到准确无误、“不重不漏”.“不重”是指不是可有可无的、甚至无用的步骤,“不漏” 是指缺少哪一步都无法完成任务。
② 逻辑性:
算法从开始的“第一步”直到“最后一步”之间做到环环相扣。分工明确,“前一步”是“后一步”的前提, “后一步”是“前一步”的继续.
③ 有穷性:
算法要有明确的开始和结束,当到达终止步骤时所要解决的问题必须有明确的结果,也就是说必须在有限步内完成任务,不能无限制的持续进行.
3算法的描述:
自然语言、程序框图、程序语言.
(三)算法中的插入排序问题
1插入排序的基本思想:
经过i-1遍处理后,L[1..i-1]己排好序。第i遍处理仅将L[i]插入L[1..i-1]的适当位置,使得L[1..i]又是排好序的序列。要达到这个目的,我们可以用顺序比较的方法。首先比较L[i]和L[i-1],如果L[i-1]≤ L[i],则L[1..i]已排好序,第i遍处理就结束了;否则交换L[i]与L[i-1]的位置,继续比较L[i-1]和L[i-2],直到找到某一个位置j(1≤j≤i-1),使得L[j] ≤L[j+1]时为止。
2 插入排序的常见方法:
(1) 有序列问题
ⅰ.直接插入法
定义:在有序列中通过逐一比较法
步骤:通过有限次的操作,将某一数据插入原有序列的一种算法。
① 将数据A与原有序列中的数据从右至左依次比较,直到发现某一数据,使得,把A插到的右边.
② 如果数据A小于原有序列中所有的数据,则将A插入到原序列的最左边.
ⅱ.有序列折半插入排序法
(1)概念:折半插入法的基本思想与二分法的思想一致,即逐渐缩小要比较的数据的范围,直到确定出所要插入数据的位置为止。
(2)步骤:
① 先将新数据与有序列中“中间位置”的数据进行比较。
② 若有序列有2n+1个数据,则”中间位置”的数据指得的第n+1个数;若有序列有2n个数据,则”中间位置”的数据指得的第n个数,
③ 如果新数据小于“中间位置”的数据,则新数据插入的位置应该在靠左边的一半;如果新数据等于“中间位置”的数据,则新数据插入到“中间位置”的数据的右边;如果新数据大于“中间位置”的数据,则新数据插入的位置应该在靠右边这一半。
④ 也就是说,一次数据的比较就排除了数据列中一半的位置,反复进行这种比较直到确定新的数据位置,像这样的插入排序法就称折半插入排序法。
(2).无序列问题
a利用有序列插入排序法来解决.
b利用选择排序的方法来解决.例如,给定一个无序列{23,12,56,40,98,33,56,67},首先从这个数据中,选出最小的数据放在第1个位置上,然后从余下的数据列中选出最小的数据放在第2个位置,反复进行上述步骤,直到数据列成为有序列,通常这种排序方法叫选择排序.
二、基本语句.
算法语句最常见,最基本的有五种:输入语句、输出语句、赋值语句、条件语句和循环语句,它们是描述算法必不可缺少的.
(一)输入语句
从计算机外将数据送入计算机称为“输入”,要完成输入需用到输入语句,它是最简单的语句.输入语句可同时输入多个变量的值,输入语句、“提示内容”部分可以省略不写.算法中输入语句有两种:一种是只需要初始赋值,计算机根据程序里的累加和循环等其它的语句便可以实现重复输入运算.另一种是变量和初值要根据情况经常的改变,一般我们把程序和初始数据分开,每次运算时只需改变初始值而不需改变程序,只要程序运行时输入相应的数据即可.所以,我们在算法程序中有时没有用到input.
(二)输出语句
几乎所有的程序都需要有输出操作,而常用的语句为输出语句,同样它也是最简单的语句.首先输出语句可同时输出多个变量的值.输出语句的“提示内容”部分可以省略不写,输出语句的表达式部分可以没有。其次要注意输出语句具备计算功能,如printx+y+z,只要前面x、y、z有值那么运行printx+y+z后就会出现x+y+z的值,任何算法都要把求解结果输出,只是形式不同而已.
(三)赋值语句
赋值语句的格式为“变量=表达式”对于这个格式应该注意以下几点:
1赋值语句具备计算功能,执行赋值语句时,赋值语句先把表达式进行计算然后把计算的值赋给左边的变量.
2 赋值语句不能出现两个或多个“=”,在一个赋值语句中只能给一个变量赋值.
3赋值语句有顺序性“=”两边不能交换,要想交换x与y的值必须引入第三个变量.
4赋值语句的作用是:如果变量没有值,那么执行完成赋值语句后变量将获得一个值.如果变量原来有值,那么执行完赋值语句后变量将获得一个新值,把原来的值“洗掉”.像录磁带一样.这样在数学计算中i=i+1,i=i^2+1等不成立的式子在赋值语句中就成立了.
(四)条件语句
条件语句是处理条件分支逻辑结构的算法语句,一般格式是“输入数据→IF语句→语句序列1→ELSE→语句序列2→ENDIF.编写实际问题中的条件语句时,应先分析实际问题,将实际问题转化为数学问题,理清算法步骤,然后再用条件语句编程.其次在条件语句嵌套时要注意大条件和小条件的关系.
(五)循环语句
1.For语句
① For语句的一般格式:
For循环体=初始值To终值
循环体
② 执行步骤:
当计算机执行For语句时,一般先执行一次循环体,当循环变量在初始值与终值之间时,执行循环体,当循环变量超过终值时,不在执行循环体,跳出循环体执行后面语句。
1. Do loop语句
① Do loop语句的一般格式:
Do
循环体
Loop While 条件为真
② 执行步骤:
计算机执行Do Loop语句,先执行一次循环体,若符合条件,继续执行循环体;当不符合时跳出循环,执行DoWhile后的语句。
(陕西省西安市汇文中学)
一.算法的基本思想.
(一)用自然语言描述算法的三个过程
1明确问题的性质,分析题意
2建立问题的描述模型
3设计确定算法
(二)相关概念及特征.
1算法的定义:
广义的算法是指完成某项工作的方法和步骤,那么我们可以说洗衣机的使用说明书是操作洗衣机的算法,菜谱是做菜的算法等等.
在数学中,现代意义的算法是指可以用计算机来解决的某一类问题的程序和步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步之内完成.
2算法的特征:
① 确定性:
算法的每一步都应当做到准确无误、“不重不漏”.“不重”是指不是可有可无的、甚至无用的步骤,“不漏” 是指缺少哪一步都无法完成任务。
② 逻辑性:
算法从开始的“第一步”直到“最后一步”之间做到环环相扣。分工明确,“前一步”是“后一步”的前提, “后一步”是“前一步”的继续.
③ 有穷性:
算法要有明确的开始和结束,当到达终止步骤时所要解决的问题必须有明确的结果,也就是说必须在有限步内完成任务,不能无限制的持续进行.
3算法的描述:
自然语言、程序框图、程序语言.
(三)算法中的插入排序问题
1插入排序的基本思想:
经过i-1遍处理后,L[1..i-1]己排好序。第i遍处理仅将L[i]插入L[1..i-1]的适当位置,使得L[1..i]又是排好序的序列。要达到这个目的,我们可以用顺序比较的方法。首先比较L[i]和L[i-1],如果L[i-1]≤ L[i],则L[1..i]已排好序,第i遍处理就结束了;否则交换L[i]与L[i-1]的位置,继续比较L[i-1]和L[i-2],直到找到某一个位置j(1≤j≤i-1),使得L[j] ≤L[j+1]时为止。
2 插入排序的常见方法:
(1) 有序列问题
ⅰ.直接插入法
定义:在有序列中通过逐一比较法
步骤:通过有限次的操作,将某一数据插入原有序列的一种算法。
① 将数据A与原有序列中的数据从右至左依次比较,直到发现某一数据,使得,把A插到的右边.
② 如果数据A小于原有序列中所有的数据,则将A插入到原序列的最左边.
ⅱ.有序列折半插入排序法
(1)概念:折半插入法的基本思想与二分法的思想一致,即逐渐缩小要比较的数据的范围,直到确定出所要插入数据的位置为止。
(2)步骤:
① 先将新数据与有序列中“中间位置”的数据进行比较。
② 若有序列有2n+1个数据,则”中间位置”的数据指得的第n+1个数;若有序列有2n个数据,则”中间位置”的数据指得的第n个数,
③ 如果新数据小于“中间位置”的数据,则新数据插入的位置应该在靠左边的一半;如果新数据等于“中间位置”的数据,则新数据插入到“中间位置”的数据的右边;如果新数据大于“中间位置”的数据,则新数据插入的位置应该在靠右边这一半。
④ 也就是说,一次数据的比较就排除了数据列中一半的位置,反复进行这种比较直到确定新的数据位置,像这样的插入排序法就称折半插入排序法。
(2).无序列问题
a利用有序列插入排序法来解决.
b利用选择排序的方法来解决.例如,给定一个无序列{23,12,56,40,98,33,56,67},首先从这个数据中,选出最小的数据放在第1个位置上,然后从余下的数据列中选出最小的数据放在第2个位置,反复进行上述步骤,直到数据列成为有序列,通常这种排序方法叫选择排序.
二、基本语句.
算法语句最常见,最基本的有五种:输入语句、输出语句、赋值语句、条件语句和循环语句,它们是描述算法必不可缺少的.
(一)输入语句
从计算机外将数据送入计算机称为“输入”,要完成输入需用到输入语句,它是最简单的语句.输入语句可同时输入多个变量的值,输入语句、“提示内容”部分可以省略不写.算法中输入语句有两种:一种是只需要初始赋值,计算机根据程序里的累加和循环等其它的语句便可以实现重复输入运算.另一种是变量和初值要根据情况经常的改变,一般我们把程序和初始数据分开,每次运算时只需改变初始值而不需改变程序,只要程序运行时输入相应的数据即可.所以,我们在算法程序中有时没有用到input.
(二)输出语句
几乎所有的程序都需要有输出操作,而常用的语句为输出语句,同样它也是最简单的语句.首先输出语句可同时输出多个变量的值.输出语句的“提示内容”部分可以省略不写,输出语句的表达式部分可以没有。其次要注意输出语句具备计算功能,如printx+y+z,只要前面x、y、z有值那么运行printx+y+z后就会出现x+y+z的值,任何算法都要把求解结果输出,只是形式不同而已.
(三)赋值语句
赋值语句的格式为“变量=表达式”对于这个格式应该注意以下几点:
1赋值语句具备计算功能,执行赋值语句时,赋值语句先把表达式进行计算然后把计算的值赋给左边的变量.
2 赋值语句不能出现两个或多个“=”,在一个赋值语句中只能给一个变量赋值.
3赋值语句有顺序性“=”两边不能交换,要想交换x与y的值必须引入第三个变量.
4赋值语句的作用是:如果变量没有值,那么执行完成赋值语句后变量将获得一个值.如果变量原来有值,那么执行完赋值语句后变量将获得一个新值,把原来的值“洗掉”.像录磁带一样.这样在数学计算中i=i+1,i=i^2+1等不成立的式子在赋值语句中就成立了.
(四)条件语句
条件语句是处理条件分支逻辑结构的算法语句,一般格式是“输入数据→IF语句→语句序列1→ELSE→语句序列2→ENDIF.编写实际问题中的条件语句时,应先分析实际问题,将实际问题转化为数学问题,理清算法步骤,然后再用条件语句编程.其次在条件语句嵌套时要注意大条件和小条件的关系.
(五)循环语句
1.For语句
① For语句的一般格式:
For循环体=初始值To终值
循环体
② 执行步骤:
当计算机执行For语句时,一般先执行一次循环体,当循环变量在初始值与终值之间时,执行循环体,当循环变量超过终值时,不在执行循环体,跳出循环体执行后面语句。
1. Do loop语句
① Do loop语句的一般格式:
Do
循环体
Loop While 条件为真
② 执行步骤:
计算机执行Do Loop语句,先执行一次循环体,若符合条件,继续执行循环体;当不符合时跳出循环,执行DoWhile后的语句。
(陕西省西安市汇文中学)