必修3第二单元_第1页
必修3第二单元_第2页
必修3第二单元_第3页
必修3第二单元_第4页
必修3第二单元_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、知识梳理知识梳理要点突破要点突破第二单元算法的程序实现第二单元算法的程序实现知识梳理知识梳理要点突破要点突破考试标准考试标准考试内容考试内容考试要求考试要求考试属性考试属性1.枚举算法及程序实现枚举算法及程序实现c加试加试2.解析算法及程序实现解析算法及程序实现c3.排序算法及程序实现排序算法及程序实现c(1)冒泡排序冒泡排序(2)选择排序选择排序4.查找算法及程序实现查找算法及程序实现c(1)顺序查找顺序查找(2)对分查找对分查找5.递归算法递归算法a6.VB访问访问Access数据库数据库a(1)通过通过ADO对象连接数据库对象连接数据库(2)通过通过Recordset对象获取数据表中的数

2、据对象获取数据表中的数据知识梳理知识梳理要点突破要点突破一、排序算法及程序实现一、排序算法及程序实现1.排序的含义及方式排序的含义及方式(1)所谓排序就是将无序的数列变成有序的数列。所谓排序就是将无序的数列变成有序的数列。(2)排列方式分为升序排列方式分为升序(也称递增,即从小到大排列也称递增,即从小到大排列)和降序和降序(也称也称递减,即从大到小排列递减,即从大到小排列)。知识梳理知识梳理要点突破要点突破2.冒泡排序冒泡排序(1)冒泡排序基本思想冒泡排序基本思想将将n个数据看作竖向排列的一组数据,每趟排序自下而上对每对个数据看作竖向排列的一组数据,每趟排序自下而上对每对相邻数据进行比较,若次

3、序不符合要求就进行交换。每趟排序结相邻数据进行比较,若次序不符合要求就进行交换。每趟排序结束时都能使排序范围内关键字最小的记录像一个气泡一样升到上束时都能使排序范围内关键字最小的记录像一个气泡一样升到上端的对应位置,整个排序过程共进行端的对应位置,整个排序过程共进行n1趟,依次将关键字最小、趟,依次将关键字最小、次小次小的各个数据冒到表的第一个、第二个的各个数据冒到表的第一个、第二个位置上。位置上。知识梳理知识梳理要点突破要点突破(2)冒泡排序算法框架冒泡排序算法框架For i1 To n1 n个数据进行排序,共需进行个数据进行排序,共需进行n1趟趟第第i趟排序:从第趟排序:从第n个数到第个数

4、到第i个数,比较相邻两个数,符合条件则个数,比较相邻两个数,符合条件则进行互换。进行互换。(3)冒泡排序程序实现冒泡排序程序实现说明:要排序的说明:要排序的n个数据已存放个数据已存放d数组中,以升序为例的程序如数组中,以升序为例的程序如下:下:For i1 To n1n个数排序共需进行个数排序共需进行n1趟趟For jn To i1 Step1每一趟从后往前,相邻两数两两每一趟从后往前,相邻两数两两比较比较知识梳理知识梳理要点突破要点突破 If d(j)d(j1)Then若满足条件则进行互换若满足条件则进行互换 tempd(j) d(j)d(j1) d(j1)temp End IfNext j

5、Next i温馨提示:若要按降序排列,只需将程序中的语句温馨提示:若要按降序排列,只需将程序中的语句“If d(j)d(j1) then”改为改为“If d(j)d(j1)Then”即可。即可。知识梳理知识梳理要点突破要点突破3.选择排序选择排序(1)选择排序的基本思想选择排序的基本思想每趟排序是在所有的数据中找出最小每趟排序是在所有的数据中找出最小(或最大或最大)的数据,使它与第的数据,使它与第一个数据相互交换位置,然后再在剩下的数据中找出最小一个数据相互交换位置,然后再在剩下的数据中找出最小(或最或最大大)的数据,与第二个数据相互交换位置,以此类推,直到所有的数据,与第二个数据相互交换位置

6、,以此类推,直到所有元素成为一个有序序列。元素成为一个有序序列。知识梳理知识梳理要点突破要点突破(2)选择排序算法框架选择排序算法框架For i1 To n1n个数排序共需进行个数排序共需进行n1趟趟第第i趟排序趟排序在第在第i至第至第n个位置中找到最小数的位置个位置中找到最小数的位置k将找到的最小数将找到的最小数(k位置上的数位置上的数)与与i位置上的数互换位置上的数互换Next i注意:当注意:当ki时,将时,将k位置上的数与位置上的数与i位置上的数互换。位置上的数互换。知识梳理知识梳理要点突破要点突破(3)选择排序的程序实现选择排序的程序实现说明:要排序的说明:要排序的n个数据已存放个数

7、据已存放d数组中。数组中。以升序为例的程序如下:以升序为例的程序如下:For i1 To n1n个排序共进行个排序共进行n1趟排序趟排序ki第第i趟排序时,首先用趟排序时,首先用k记录记录iFor ji1 To nk位置上的数依次与位置上的数依次与j位置上的数进行比较位置上的数进行比较 If d(k)d(j)Then kj若找到比若找到比k位置上更小的数,位置上更小的数,则更新则更新k的值的值Next j知识梳理知识梳理要点突破要点突破If ki Then若若i位置上的数不是最小数,则和位置上的数不是最小数,则和k位置上的数位置上的数进行互换进行互换tempd(i)d(i)d(k)d(k)te

8、mp End IfNext i温馨提示:若要按降序排列,只要将语句温馨提示:若要按降序排列,只要将语句If d(k)d(j) Then kj改成改成If d(k)d(j1) Then kj即可。即可。知识梳理知识梳理要点突破要点突破二、查找算法及程序实现二、查找算法及程序实现1.查找算法查找算法所谓所谓查找就是在指定的数据中寻找某一特定的数据。查找就是在指定的数据中寻找某一特定的数据。查找结果有两种,即找到查找结果有两种,即找到(查找成功查找成功)和未找到和未找到(查找失败查找失败)。知识梳理知识梳理要点突破要点突破2.顺序查找顺序查找(1)顺序查找的基本思想顺序查找的基本思想从第一个数据开始

9、,从左往右从第一个数据开始,从左往右(或从上到下或从上到下)将数据按顺序逐个与将数据按顺序逐个与给定的值进行比较,若某个数据和给定值相等,则查找成功,给定的值进行比较,若某个数据和给定值相等,则查找成功,找到并输出所查数据的位置;反之,查找失败。找到并输出所查数据的位置;反之,查找失败。若有若有n个数,则可能的最多查找次数为个数,则可能的最多查找次数为n。知识梳理知识梳理要点突破要点突破(2)顺序查找算法基本框架顺序查找算法基本框架设要查找的数为设要查找的数为key,待查找的数存放在数组,待查找的数存放在数组d中。中。For语句框架:语句框架:For i1 to n 若若d(i)key,则表示

10、找到,做相应处理,则表示找到,做相应处理Next i若若in表示未找到表示未找到Do While语句框架:语句框架:i1Do while in 若若d(i)key,则表示找到,做相应处理,则表示找到,做相应处理 ii1Loop若若in表示未找到表示未找到知识梳理知识梳理要点突破要点突破(3)顺序查找的程序实现顺序查找的程序实现在在n个数组元素中依次查找,找到第个数组元素中依次查找,找到第1个满足条件的值,查找即结个满足条件的值,查找即结束,输出找到元素所在的位置;若找不到,输出束,输出找到元素所在的位置;若找不到,输出“未找到未找到”。程序实现:程序实现:设要查找的数据是设要查找的数据是key

11、(在文本框在文本框Text1中输入中输入),查找的数据存放,查找的数据存放在数组在数组d中。中。pos为找到数的位置,为找到数的位置,pos0表示未找到。表示未找到。P表示查找的次数。表示查找的次数。keyVal(Text1.Text)Val要根据实际情况决定是否要添加要根据实际情况决定是否要添加p0pos0知识梳理知识梳理要点突破要点突破findFalsefind表示查找结果表示查找结果i1Do While in And Not find表示还没找完并且还未找到,表示还没找完并且还未找到,则继续查找,则继续查找,Not find也可表示为也可表示为findfalse pp1 If keyd(

12、i) Then posi findTrue End Ifii1Loop知识梳理知识梳理要点突破要点突破If find Then也可表示为也可表示为If findtrue thenText2.Text“在在d(“Str(pos)”)中中”ElseText2.Text“未找到未找到”End If知识梳理知识梳理要点突破要点突破3.对分查找对分查找(1)对分查找的基本思想对分查找的基本思想在有序的数据序列中在有序的数据序列中(一般存放在数组中一般存放在数组中),首先把要查找的数据,首先把要查找的数据与数组中间位置的元素进行比较,如果相等,则查找成功并退出与数组中间位置的元素进行比较,如果相等,则查找

13、成功并退出查找;否则,根据数组元素的有序性,确定数据应在数组的前半查找;否则,根据数组元素的有序性,确定数据应在数组的前半部分还是在后半部分查找;在确定了新的查找范围后,重复进行部分还是在后半部分查找;在确定了新的查找范围后,重复进行以上比较,直到找到或未找到为止。以上比较,直到找到或未找到为止。温馨提示:温馨提示:对分查找的前提是被查找的数据序列必须是有序。对分查找的前提是被查找的数据序列必须是有序。“未找到未找到”是指当指定范围内的起点大于终点仍未找到该数据。是指当指定范围内的起点大于终点仍未找到该数据。知识梳理知识梳理要点突破要点突破(2)对分查找算法基本框架对分查找算法基本框架说明:要

14、查找的数为说明:要查找的数为key,待查找的数存放在数组,待查找的数存放在数组d中。中。i为查找范围的起点,为查找范围的起点,j为查找范围的终点,为查找范围的终点,m为范围为范围i,j的中间的中间位置。位置。i1jnDo While ij 计算中点位置计算中点位置m 比较比较key与与d(m),并做相应处理,并做相应处理 Loop 若若ij,则表示未找到,则表示未找到知识梳理知识梳理要点突破要点突破(3)对分查找程序实现对分查找程序实现在在n个数组元素中依次查找,找到第个数组元素中依次查找,找到第1个满足条件的值,查找就结个满足条件的值,查找就结束,输出找到元素所在的位置;若找不到,输出束,输

15、出找到元素所在的位置;若找不到,输出“未找到未找到”。程序实现:程序实现:设要查找的数据是设要查找的数据是key(在文本框在文本框Text1中输入中输入),查找的数据存放,查找的数据存放在数组在数组d中。中。在文本框在文本框Text2中输出查找结果,若找到输出中输出查找结果,若找到输出“找到!位置为:找到!位置为:X”,否则输出,否则输出“未找到!未找到!”在文本框在文本框Text3中输出共查找的次数。中输出共查找的次数。P表示查找的次数。表示查找的次数。知识梳理知识梳理要点突破要点突破核心代码为核心代码为(以升序为例以升序为例):keyVal(Text1.Text)表示要查找的数表示要查找的

16、数p0表示查找的次数表示查找的次数findFalse查找的结果,若查找的结果,若findtrue表示找到,表示找到,find false表示未找到表示未找到i1查找的起始范围查找的起始范围jn查找的终点范围查找的终点范围Do While ij And Not find如果还未找完并且未找到如果还未找完并且未找到pp1查找次数计数查找次数计数m(ij)2计算中点位置计算中点位置mIf keyd(m) Then表示找到的情况表示找到的情况 findTrue知识梳理知识梳理要点突破要点突破 Text2.Text“找到!位置为:找到!位置为:”Str(m)End IfIf Keyd(m)Then表示查

17、找的数比中间位置上的数大时表示查找的数比中间位置上的数大时 im1Else表示查找的数比中间位置上的数小时表示查找的数比中间位置上的数小时 jm1End IfLoopIf Not find Then Text2.Text“未找到!未找到!”Text3.Text“共查找的次数为:共查找的次数为:”Str(p)温馨提示:计算中点位置的语句还可以写成:温馨提示:计算中点位置的语句还可以写成:mInt(ij)/2)或或mFix(ij)/2)。知识梳理知识梳理要点突破要点突破三、递归算法三、递归算法1.递归的概念递归的概念2.递归算法的基本思想递归算法的基本思想3.采用递归算法须具备的条件采用递归算法须

18、具备的条件函数或过程调用其本身,称为递归。函数或过程调用其本身,称为递归。递归算法的基本思想是把规模较大的、较难解决的问题变成规模递归算法的基本思想是把规模较大的、较难解决的问题变成规模较小的、容易解决的同一问题,规模较小的问题又变成规模更小较小的、容易解决的同一问题,规模较小的问题又变成规模更小的问题,直到可以直接得出它的解,从而得到原来问题的解。的问题,直到可以直接得出它的解,从而得到原来问题的解。(1)每一步骤解决问题的方法要一致。每一步骤解决问题的方法要一致。(2)要有结束的边界条件。要有结束的边界条件。知识梳理知识梳理要点突破要点突破四、四、Connection对象对象用用Conne

19、ction建立和数据库的连接时,首先创建一组建立和数据库的连接时,首先创建一组ADO对象用对象用于 设 置 打 开 连 接 和 产 生 结 果 集 , 需 要 设 置 连 接 字 符 串于 设 置 打 开 连 接 和 产 生 结 果 集 , 需 要 设 置 连 接 字 符 串ConnectionString的参数。下列语句定义一个的参数。下列语句定义一个Connection对象的对象的实例实例conn,conn是实例的名称,命名规则与是实例的名称,命名规则与VB变量定义相同,变量定义相同,并设置并设置conn的连接字符串:的连接字符串:Dim conn As New ADODB.Connect

20、ionDimabc As New ADODB.Recordsetconn.ConnectionString“ProviderMicrosoft.ACE.OLEDB.12.0;Data Source”& App.Path & “souse1.accdb”知识梳理知识梳理要点突破要点突破其中,其中,“Provider”用于指定连接的提供者,用于指定连接的提供者,“Data Source”用于指用于指定数据库的文件名定数据库的文件名(含绝对路径含绝对路径)。App.Path返回当前应用程序所返回当前应用程序所在的绝对路径。在的绝对路径。Connection对象具有对象具有Open、E

21、xecute、Close等方法,其中等方法,其中Open方法用于建立到数据源的连接,方法用于建立到数据源的连接,Execute用于执行指定的查询、用于执行指定的查询、SQL语句或特定提供者的文本等内容,而语句或特定提供者的文本等内容,而Close方法则用于关闭方法则用于关闭连接。连接。知识梳理知识梳理要点突破要点突破五、五、Recordset对象对象用用 R e c o r d s e t 对 象 从 数 据 库 中 查 询 记 录 时 , 要 设 置对 象 从 数 据 库 中 查 询 记 录 时 , 要 设 置ActiveConnection属性的值。语句属性的值。语句Set abc.Act

22、iveConnectionconn,使,使Recordset对象的实例对象的实例abc与与Connection对象的实例对象的实例conn建立关联。建立关联。在在abc与与conn建立关联后,可用建立关联后,可用Recordset对象的对象的Open方法打开、方法打开、查询数据表的记录。查询数据表的记录。Open方法的参数为方法的参数为SQL命令。如:命令。如:abc.Open“SELECT*FROM info”运行后,记录集运行后,记录集abc中的数据为中的数据为SQL语句语句“SELECT*FROM info”查询到的记录。查询到的记录。同样,同样,Recordset对象的对象的Close

23、方法用于关闭对象。方法用于关闭对象。知识梳理知识梳理要点突破要点突破Abc.close表示关闭记录集。表示关闭记录集。Recordset对象的对象的Fields集合用于返回当前记录中的数据,如:集合用于返回当前记录中的数据,如:abc.Fields(“book”)返回当前记录中返回当前记录中“book”字段的值;字段的值;abc.Fields(0)返回当前记录中第一个字段的值,如果第一个字段返回当前记录中第一个字段的值,如果第一个字段名为名为“book”,则,则abc.Fields(0)与与abc.Fields(“book”)返回值相同。返回值相同。例如例如Recordset对象实例对象实例a

24、bc打开了下表的记录集:打开了下表的记录集:知识梳理知识梳理要点突破要点突破Recordset对象打开的记录集:对象打开的记录集:bookauthorpricePublishing平凡的世界平凡的世界路遥路遥78.2海南人民出版社海南人民出版社红楼梦红楼梦曹雪芹曹雪芹53.6上海教育出版社上海教育出版社知识梳理知识梳理要点突破要点突破假设当前记录为第假设当前记录为第2条记录,则条记录,则Fields集合返回当前记录某个字段集合返回当前记录某个字段的数据有以下两种方法:的数据有以下两种方法:(1)abc.Fields(字段序号字段序号),其中字段序号从,其中字段序号从0开始编号。开始编号。(2)

25、abc.Fields(“字段名称字段名称”)故故abc.Fields(0)和和abc.Fields(“book”)都返回都返回“红楼梦红楼梦”,abc.Fields(1)和和abc.Fields(“author”)都返回都返回“曹雪芹曹雪芹”,abc.Fields(2)和和abc.Fields(“price”)都返回都返回“53.6”,abc.Fields(3)和和abc.Fields(“Publishing”)都返回都返回“上海教育出版社上海教育出版社”。知识梳理知识梳理要点突破要点突破通过通过Recordset对象从数据库中返回的这些数据可以通过数组的对象从数据库中返回的这些数据可以通过数

26、组的形式存储,以方便我们后序进行统计、排序、查找等处理。形式存储,以方便我们后序进行统计、排序、查找等处理。Recordset对象的对象的AddNew方法为可更新的方法为可更新的Recordset对象创建一对象创建一个新记录,它添加一条新的空记录,并且定位在该记录上;个新记录,它添加一条新的空记录,并且定位在该记录上;Delete方法可将当前记录从记录集中删除;方法可将当前记录从记录集中删除;Edit方法可以编辑修方法可以编辑修改数据库的记录,注意首先要将需要编辑的记录成为当前记录,改数据库的记录,注意首先要将需要编辑的记录成为当前记录,然后使用然后使用Edit方法修改记录内容,使用方法修改记

27、录内容,使用Edit方法后,再移动记录方法后,再移动记录或者使用或者使用Update方法把数据存入到数据库中;方法把数据存入到数据库中;Move方法可以使方法可以使不同的记录成为当前记录,主要有不同的记录成为当前记录,主要有5种使用方法:种使用方法:知识梳理知识梳理要点突破要点突破MoveFirst:移动到记录集的第一条记录。:移动到记录集的第一条记录。MoveLast:移动到记录集的最后一条记录。:移动到记录集的最后一条记录。MoveNext:移动到记录集的下一条记录。:移动到记录集的下一条记录。MovePrevious:移动到记录集的上一条记录。:移动到记录集的上一条记录。Move:可以使

28、用:可以使用Move方法向前或向后移动若干条记录。方法向前或向后移动若干条记录。但应注意:若到数据表结尾处还继续向下移动,程序会出错,因但应注意:若到数据表结尾处还继续向下移动,程序会出错,因此在使用此在使用MoveNext时要判断时要判断Recordset的的BOF和和EOF属性,判断属性,判断记录指针是不是到达首记录之前或尾记录之后。记录指针是不是到达首记录之前或尾记录之后。EOF取值为取值为“True”时表示已经到达记录集的结尾,否则时表示已经到达记录集的结尾,否则EOF的值为的值为“False”。若若BOF和和EOF的取值均为的取值均为“True”则表示此记录集为空。则表示此记录集为空

29、。知识梳理知识梳理要点突破要点突破三、三、SQL:Select语句语句SELECT语句是结构化查询语言语句是结构化查询语言SQL中常见的语句,主要用于从中常见的语句,主要用于从数据表中查询数据,如语句数据表中查询数据,如语句“SELECT*FROM info”表示查询数表示查询数据表据表“info”的全部数据。的全部数据。语句总结如下:语句总结如下:(1)定义定义Connection对象的实例对象的实例conn和和Recordset对象的实例对象的实例abc。Dim conn As New ADODB.ConnectionDimabc As New ADODB.Recordset知识梳理知识梳

30、理要点突破要点突破(2)为实例为实例conn设置设置ConnectionString属性值。属性值。conn.ConnectionString“ProviderMicrosoft.ACE.OLEDB.12.0;DATA Source”& App.Path& “souse1.accdb”(3)打开与数据库的连接。打开与数据库的连接。conn.Open(4)建立实例建立实例abc与与conn之间的关联。之间的关联。Set abc.ActiveConnectionconn(5)执行执行SELECT命令,将查询结果返回给命令,将查询结果返回给abc。abc.Open“SELECT*FR

31、OM info”知识梳理知识梳理要点突破要点突破(6)在应用程序中引用在应用程序中引用abc中当前记录的字段值。中当前记录的字段值。Label1.Captionabc.Fields(“book”)Label2.Captionabc.Fields(“price”)(7)关闭记录集。关闭记录集。Abc.close(8)关闭与数据库的连接。关闭与数据库的连接。conn.Close知识梳理知识梳理要点突破要点突破一、冒泡排序和选择排序一、冒泡排序和选择排序冒泡排序和选择排序的程序实现很相似,都用到双重循环,以冒泡排序和选择排序的程序实现很相似,都用到双重循环,以及数组元素之间的比较,因此需要准确区分两

32、者之间的代码异及数组元素之间的比较,因此需要准确区分两者之间的代码异同,能将程序补充完整。同,能将程序补充完整。知识梳理知识梳理要点突破要点突破二、明确两种排序算法的比较次数和交换次数二、明确两种排序算法的比较次数和交换次数冒泡排序冒泡排序算法比较次数为总的比较次数:算法比较次数为总的比较次数:n(n1)/2。在每一遍。在每一遍加工的过程中需要对逆序的数据两两进行交换,选择排序的比加工的过程中需要对逆序的数据两两进行交换,选择排序的比较次数为较次数为n(n1)/2。两种排序的比较次数与待排序元素的初始。两种排序的比较次数与待排序元素的初始状态无关,而交换次数与待排序元素的初始状态有关,即当待状

33、态无关,而交换次数与待排序元素的初始状态有关,即当待排序元素已经有序,交换排序元素已经有序,交换0次,最坏情况下选择排序交换次,最坏情况下选择排序交换n1次,次,冒泡排序最坏情况下交换冒泡排序最坏情况下交换(n1)(n2)/2次。次。知识梳理知识梳理要点突破要点突破三、理解两种排序算法的原理基础上能准确模拟数据交换后数列三、理解两种排序算法的原理基础上能准确模拟数据交换后数列的变化的变化一般一般情况下,冒泡排序的交换发生在相邻两数为逆序对时,相情况下,冒泡排序的交换发生在相邻两数为逆序对时,相邻两数两两交换,其范围是待排序区域;选择排序的交换发生邻两数两两交换,其范围是待排序区域;选择排序的交

34、换发生在待排序区域的最小在待排序区域的最小(最大最大)数和待排序区域的第一个数进行交数和待排序区域的第一个数进行交换,若最小数换,若最小数(最大数最大数)是待排序区域的第一个数,则无需交换。是待排序区域的第一个数,则无需交换。这要求学生对知识进行内化理解,死记硬背的方式则会遇到困这要求学生对知识进行内化理解,死记硬背的方式则会遇到困难,建议在复习之初可以用跟踪模拟的方式,观察数据的变化难,建议在复习之初可以用跟踪模拟的方式,观察数据的变化来加深理解。来加深理解。知识梳理知识梳理要点突破要点突破四、对分查找算法的应用的前提条件四、对分查找算法的应用的前提条件五、对分查找的工作原理的理解五、对分查

35、找的工作原理的理解六、两种查找的程序实现六、两种查找的程序实现待查数列有序,而顺序查找没有这样的要求,可以无序。待查数列有序,而顺序查找没有这样的要求,可以无序。比较次数是学生容易忽略的地方。比较次数是学生容易忽略的地方。包括中间点位置的确定、新的查找区间的变化以及模拟跟踪。包括中间点位置的确定、新的查找区间的变化以及模拟跟踪。知识梳理知识梳理要点突破要点突破【典例【典例1】对对10个数据进行冒泡排序,需要比较的次数是个数据进行冒泡排序,需要比较的次数是()A.90 B.110 C.45 D.55解析解析本题要求对规模为本题要求对规模为10个的数据进行冒泡排序的比较次个的数据进行冒泡排序的比较

36、次数。数。根据冒泡排序算法比较次数的计算方法可知,当根据冒泡排序算法比较次数的计算方法可知,当n10时,比时,比较次数较次数10(101)/245,所以选择答案,所以选择答案C。答案答案C知识梳理知识梳理要点突破要点突破【变式【变式1】对数组元素对数组元素a(1)到到a(6)进行降序排序,采用选择排序进行降序排序,采用选择排序算法的某算法的某VB程序段如下:程序段如下:For m1 To 5pmFor nm1 To 8 If a(n)a(p) Then pnNext nIf pm Then _Next m当第一遍排序之后得到的数据序列为当第一遍排序之后得到的数据序列为12,2,6,8,9,11

37、。方。方框中的语句是框中的语句是()知识梳理知识梳理要点突破要点突破A.tp:pm:mtB.a(p)a(m):a(p)a(m)C.pm:mpD.ta(p):a(p)a(m):a(m)t解析解析选择排序算法中,内层循环的部分用于找出选择排序算法中,内层循环的部分用于找出m到到5的数列的数列中,最大的数,当发现之后,存储的是该数据的下标。当内存循中,最大的数,当发现之后,存储的是该数据的下标。当内存循环结束之后,发现在第环结束之后,发现在第m个位置上存放的不是最大数时,需要将个位置上存放的不是最大数时,需要将两个数进行交换,而不是将下标进行互换。且交换的程序编写需两个数进行交换,而不是将下标进行互

38、换。且交换的程序编写需要有第三个暂存变量来辅助存储。要有第三个暂存变量来辅助存储。答案答案D知识梳理知识梳理要点突破要点突破【典例【典例2】篮球联赛中,有篮球联赛中,有5个班级的比赛积分依次为个班级的比赛积分依次为14,11,13,8,9。若采用冒泡排序算法对其进行从小到大排序,则。若采用冒泡排序算法对其进行从小到大排序,则完成第二遍时的结果是完成第二遍时的结果是()A.8,11,13,14,9 B.8,9,13,14,11C.8,9,14,11,13 D.14,13,11,9,8知识梳理知识梳理要点突破要点突破解析解析从小到大冒泡排序的基本思想是从最后的一个元素起,自从小到大冒泡排序的基本思

39、想是从最后的一个元素起,自后向前比较相邻的两个数据,将较小的数据换到前面,较大的换后向前比较相邻的两个数据,将较小的数据换到前面,较大的换到后面。重复这一过程,直到处理完最后两个数据,称为一遍加到后面。重复这一过程,直到处理完最后两个数据,称为一遍加工。因此第一遍加工时:工。因此第一遍加工时:9和和8,9不动;不动;8和和13,13换到后面,换到后面,8换到前面;换到前面;8和和11,11换到后面,换到后面,8换到前面;换到前面;8和和14,14换到后换到后面,面,8换到前面。这是第一遍加工,结果是:换到前面。这是第一遍加工,结果是:8,14,11,13,9。第二遍加工时:第二遍加工时:9和和

40、13,13换到后面,换到后面,9换到前面;换到前面;9和和11,1l换换到后面,到后面,9换到前面;换到前面;9和和14,14换到后面,换到后面,9换到前面。这是第换到前面。这是第二遍加工,结果是:二遍加工,结果是:8,9,14,11,13。答案答案C知识梳理知识梳理要点突破要点突破【变式【变式2】(20159月浙江选考模拟月浙江选考模拟)采用如下选择排序算法对采用如下选择排序算法对数组数组a中中5个数据个数据“23,86,98,65,2”按从小到大的顺序进按从小到大的顺序进行排序。行排序。For i1 To 4 ki For ji1 To 5 If a(j)a(k) Then kj Next

41、 j If ki Then ta(i):a(i)a(k):a(k)t End IfNext i知识梳理知识梳理要点突破要点突破整个排序过程中,数组中的数据比较次数和交换次数分别是整个排序过程中,数组中的数据比较次数和交换次数分别是()A.10次和次和3次次 B.10次和次和4次次C.15次和次和3次次 D.15次和次和10次次解析解析本题考查对本题考查对VB冒泡排序算法的实现过程。第一遍排序时,冒泡排序算法的实现过程。第一遍排序时,比较比较4次,交换次,交换1次,数据变为次,数据变为“2,86,98,65,23”;第二遍排;第二遍排序时,比较序时,比较3次,交换次,交换1次,数据变为次,数据变

42、为“2,23,98,65,86”;第;第三遍排序时,比较三遍排序时,比较2次,交换次,交换1次,数据变为次,数据变为“2,23,65,98,86”;第四遍排序时,比较;第四遍排序时,比较1次,交换次,交换1次,数据变为次,数据变为“2,23,65,86,98”;合计数据比较;合计数据比较10次,交换次,交换4次,选项次,选项B正确。正确。答案答案B知识梳理知识梳理要点突破要点突破【典例【典例3】(20126月浙江会考月浙江会考)有如下有如下Visual Basic程序段:程序段:ma(1)i2Do While i10If ma(i) Then ma(i)ii1Loop该程序段执行后,变量该程序

43、段执行后,变量m中存储的是中存储的是()A.a(1)至至a(10)中的最大值中的最大值B.a(1)至至a(10)中的最小值中的最小值C.a(2)至至a(10)中的最大值中的最大值D.a(2)至至a(10)中的最小值中的最小值知识梳理知识梳理要点突破要点突破解析解析本题主要考查选择排序的核心代码:寻找最小值或最大值。本题主要考查选择排序的核心代码:寻找最小值或最大值。先假设数组的第一项是最大的,并赋值给变量先假设数组的第一项是最大的,并赋值给变量m,然后把从第二,然后把从第二项开始的所有数组元素跟变量项开始的所有数组元素跟变量m进行比较,如果比进行比较,如果比m大,则把该大,则把该元素赋值给元素

44、赋值给m。这样循环结束后,变量。这样循环结束后,变量m中存储的就是该数据中中存储的就是该数据中的最大值。的最大值。答案答案A知识梳理知识梳理要点突破要点突破【变式【变式3】(2013浙江学业水平考试浙江学业水平考试)实现某排序算法的部分实现某排序算法的部分VB程序如下:程序如下:For i1 To 6kiFor ji1 To 7 If a(j)a(k) Then kjNext jIf ik Thenta(i):a(i)a(k):a(k)tEnd IfNext i知识梳理知识梳理要点突破要点突破在排序过程中,经过某一遍排序在排序过程中,经过某一遍排序“加工加工”后,数组元素后,数组元素a(1)到

45、到a(7)的数据依次为的数据依次为“10,41,75,12,63,11,85”。下一遍排序。下一遍排序“加工加工”后数组元素后数组元素a(1)到到a(7)的数据依次是的数据依次是()A.10,11,41,75,12,63,85B.10,11,75,12,63,41,85C.10,11,12,75,63,41,85D.10,11,12,41,63,75,85知识梳理知识梳理要点突破要点突破解析解析(1)根据算法的代码特征确定是选择排序。根据算法的代码特征确定是选择排序。(2)由由a(j)a(k)确确定排序的目标是升序。定排序的目标是升序。(3)观察某遍排序观察某遍排序“加工加工”后的数列发现只后

46、的数列发现只有第一个元素已经处于有序状态,因此下一遍排序后的目标是将有第一个元素已经处于有序状态,因此下一遍排序后的目标是将第二个小的数第二个小的数11选出来和第二个位置的数选出来和第二个位置的数41进行交换,从而获得进行交换,从而获得所求答案。所求答案。答案答案B知识梳理知识梳理要点突破要点突破【典例【典例4】下列下列VB程序段是选择排序程序的主要部分。其中虚程序段是选择排序程序的主要部分。其中虚线框内代码用于寻找数据元素线框内代码用于寻找数据元素d(i)到到d(n)的最小值。的最小值。For i1 To n1If ik Then ktd(i):d(i)d(k):d(k)ktNext i知识

47、梳理知识梳理要点突破要点突破框内代码运行结束时,保存最小值的数组元素一定是框内代码运行结束时,保存最小值的数组元素一定是()A.d(n) B.d(j) C.d(i) D.d(k)解析解析变量变量k记录当前找到的最小值的位置,即数组元素的下标,记录当前找到的最小值的位置,即数组元素的下标,则则d(k)就是当前找到的最小的数组元素。它的思想方法是先假设就是当前找到的最小的数组元素。它的思想方法是先假设数组的第数组的第i项是最小的项是最小的(第第i遍排序遍排序),因此,因此k记为记为i,然后把从第,然后把从第i1项开始的所有数组元素跟项开始的所有数组元素跟d(k)进行比较,如果比进行比较,如果比d(

48、k)小,则用小,则用k记记录该元素的下标。这样循环结束后,变量录该元素的下标。这样循环结束后,变量k中存储的就是数组中中存储的就是数组中从第从第i项至第项至第n项的最小元素的下标,项的最小元素的下标,d(k)就是第就是第i项至第项至第n项中的项中的最小元素。最小元素。答案答案D知识梳理知识梳理要点突破要点突破【变式【变式4】对数组元素对数组元素a(1)到到a(8)进行升序排序,其排序算法的进行升序排序,其排序算法的VB部分程序段如下:部分程序段如下:For m1 To 7pmFor nm1 To 8Next nIf pm Then ta(p):a(p)a(m):a(m)tNext m知识梳理知

49、识梳理要点突破要点突破方框中的语句是方框中的语句是()A.If a(n)a(p) Then pmB.If a(n)a(p) Then pnC.If a(n)a(p) Then pnD.If a(n)a(p) Then pm解析解析(1)这样的题首先要观察已有的程序代码确定算法类型,这样的题首先要观察已有的程序代码确定算法类型,比如比如“pmFor nm1 To 8”可以确定该排序算法为选择排可以确定该排序算法为选择排序。序。(2)再确认排序的升降特性,确定判断的条件,最后看清楚再确认排序的升降特性,确定判断的条件,最后看清楚变量的名称。由于是升序排序,则判断的条件是变量的名称。由于是升序排序,

50、则判断的条件是a(n)a(p)的时的时候更新候更新p指针,指向当前第指针,指向当前第m小的数,也就是小的数,也就是n所在的位置。所在的位置。答案答案B知识梳理知识梳理要点突破要点突破【典例【典例5】 使用对分查找在已排序的数组使用对分查找在已排序的数组d(数组元素数组元素d(1)d(2)d(n)中查找中查找key的算法流程图如图所示。其的算法流程图如图所示。其中中框中的内容分别是框中的内容分别是()知识梳理知识梳理要点突破要点突破A.jm1im1B.jm1im1C.jm1im1D.jm1im1解析解析因为数据是升序排列的,因此,当因为数据是升序排列的,因此,当keyd(m)时,要查找时,要查找

51、的数据应在的数据应在m的左边,即查找的范围的终点的左边,即查找的范围的终点j修改为修改为jm1,当,当keyd(m)时,要查找的数据应在时,要查找的数据应在m的右边,即查找的范围的起的右边,即查找的范围的起点点j修改为修改为im1。答案答案C知识梳理知识梳理要点突破要点突破【典例【典例6】有两组数据:有两组数据:54,31,43,12,8,73,56,34,89,60,23,6787,83,75,70,63,59,55,37,33,21,17,7下列有关查找方法的描述,不正确的是下列有关查找方法的描述,不正确的是()A.可以直接使用顺序查找可以直接使用顺序查找B.可以直接使用对分查找可以直接使

52、用对分查找C.可以直接使用对分查找可以直接使用对分查找D.可以直接使用顺序查找可以直接使用顺序查找解析解析观察数列观察数列为无序,显然不符合对分查找的有序前提。为无序,显然不符合对分查找的有序前提。为降序,可以用对分查找,同时也适用于顺序查找。注意此为降序,可以用对分查找,同时也适用于顺序查找。注意此题问的是不正确的选项。题问的是不正确的选项。C知识梳理知识梳理要点突破要点突破【典例【典例7】某学校图书管理系统中有某学校图书管理系统中有10万条图书资料记录万条图书资料记录(已经已经索引排序索引排序),假设从中取出一条记录并与待查找项进行比较所,假设从中取出一条记录并与待查找项进行比较所花时间为

53、花时间为10毫秒,则用对分法在该系统中查找任意一本指定毫秒,则用对分法在该系统中查找任意一本指定图书最多花费的时间约为图书最多花费的时间约为()A.100万毫秒万毫秒 B.50万毫秒万毫秒C.10毫秒毫秒 D.170毫秒毫秒知识梳理知识梳理要点突破要点突破答案答案D知识梳理知识梳理要点突破要点突破【典例【典例8】小王设计了一个算法来求小王设计了一个算法来求xn(x的的n次方次方)的值,他的算的值,他的算法思想是:把法思想是:把xn转换为转换为x*xn1,而,而xn1又可以转换为又可以转换为x*xn2,如此继续,直到如此继续,直到x*x0,而,而x01,从而求出了,从而求出了xn的值。小王采的值

54、。小王采用的算法是用的算法是()A.解析算法解析算法 B.枚举算法枚举算法C.递归算法递归算法 D.查找算法查找算法解析解析本题中求本题中求“xn”的值,采用的值,采用“大事化小,小事化了大事化小,小事化了”的的方法,符合递归算法的基本思想。方法,符合递归算法的基本思想。答案答案C知识梳理知识梳理要点突破要点突破【典例【典例9】下列下列VB程序中,程序中,f是一个递归函数。是一个递归函数。Private Sub Command1_Click( ) Dim y as Long Text1.Text“”“” yf(3) Label1.Captionstr(y)End SubFunction f(n

55、 As Integer) as Long Text1.TextText1.TextStr(n) If n1 Then f1知识梳理知识梳理要点突破要点突破 Else ff(n1)2 End IfEnd Function程序运行时,单击命令按钮程序运行时,单击命令按钮Command1后,文本框后,文本框Text1中显示中显示的内容是的内容是()A.3 B.321 C.123 D.2知识梳理知识梳理要点突破要点突破解析解析这段程序由两部分组成:事件处理过程这段程序由两部分组成:事件处理过程(Private Sub Command1_Click()和自定义函数和自定义函数(Function f(n

56、As Integer) As Long)。在自定义函数。在自定义函数f中又出现了调用函数中又出现了调用函数f本身的语句本身的语句ff(n1)2,因此,因此f函数采用的是递归算法。函数采用的是递归算法。在事件处理过程在事件处理过程Private Sub Command1_Click()中,语句中,语句yf(3)表示调用函数表示调用函数f,将参数,将参数3传递给传递给f函数中的变量函数中的变量n,最终将函数的,最终将函数的返回值赋给变量返回值赋给变量y。函数函数f执行时,执行时,n的值和的值和Text1中的内容如下表所示:中的内容如下表所示:F(n)nText1.textF(3)33F(2)232

57、F(1)1321知识梳理知识梳理要点突破要点突破因此,在文本框因此,在文本框Text1上显示的内容为上显示的内容为321。如问标签如问标签Label1中显示的内容为多少?那又该如何解题呢?这就中显示的内容为多少?那又该如何解题呢?这就要求大家掌握递归算法的实现过程了。递归函数要求大家掌握递归算法的实现过程了。递归函数f(n)的执行过程的执行过程如图所示:如图所示:即即yf(3)5,因此在标签,因此在标签Label1上显示的内容为上显示的内容为5。答案答案B知识梳理知识梳理要点突破要点突破七、七、VB和数据库的连接和数据库的连接八、八、Fields集合集合对学生来说,这部分知识比较陌生,牵涉一系

58、列的基本概念和对学生来说,这部分知识比较陌生,牵涉一系列的基本概念和操作,刚开始容易出现各种错误,需要学会根据产生的错误提操作,刚开始容易出现各种错误,需要学会根据产生的错误提示,分析产生该错误的可能原因。示,分析产生该错误的可能原因。要求了解要求了解Fields集合通过指定字段序号或字段名返回数据的方集合通过指定字段序号或字段名返回数据的方法,要清楚字段名和字段序号之间的对应关系以及当前记录是法,要清楚字段名和字段序号之间的对应关系以及当前记录是哪一条。哪一条。Fields集合返回的是当前记录的数据。集合返回的是当前记录的数据。知识梳理知识梳理要点突破要点突破九、九、VB应用程序应用程序通过

59、通过ADO访问访问Access数据库,将数据库作为数据库,将数据库作为VB程序设计时的数程序设计时的数据源,可用数组的形式存储获取的数据,进而可以通过枚举、据源,可用数组的形式存储获取的数据,进而可以通过枚举、解析等算法对从数据库中获取的数据进行简单的处理。解析等算法对从数据库中获取的数据进行简单的处理。知识梳理知识梳理要点突破要点突破【典例【典例11】通过通过ADO的的Recordset对象从数据库中获取数据,对象从数据库中获取数据,代码如下:代码如下:Dim aa As New ADODB.Recordsetaa.Open “SELECT*FROM info”在调试时出现了如图所示的错误提

60、示:在调试时出现了如图所示的错误提示:知识梳理知识梳理要点突破要点突破产生该错误提示的原因可能是产生该错误提示的原因可能是()A.没有定义没有定义ADO的的Connection对象实例对象实例B.Recordset对象实例没有打开记录集对象实例没有打开记录集 C.没有设置没有设置Recordset对象实例的对象实例的ActiveConnection连接属性连接属性D.指定的数据库文件不存在指定的数据库文件不存在解析解析代码中第一行定义了代码中第一行定义了Recordset对象实例对象实例aa,第二行代码,第二行代码的功能是打开记录集,查询数据库的的功能是打开记录集,查询数据库的SQL语句语句“SELECT*FROM info”表示获取数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论