冒泡排序(正向+逆向) 汇编语言课程设计
- 格式:pdf
- 大小:197.87 KB
- 文档页数:15
冒泡排序法——《2.3.2冒泡排序》第1课时教学设计一.教材分析本节内容选自浙江教育出版社《算法与程序设计》第二章第三节。
在教材处理上,本课时主要学习教材第二章第3节的“排序”中的冒泡排序思想、算法以及编程思路,还加入了冒泡排序算法的程序实现,下节课让学生进行上机实践。
冒泡排序算法的程序实现部分的内容在教材中的并没有讲到的。
这样的处理主要是为了:一是以加深学生对算法和程序设计的关系的体会;二是可以通过对程序实现的讲解和练习形成对由双重循环构建而成的程序的分析思路和分析方法,进一步加深对循环的理解。
排序算法是使用频率最高的算法之一,而冒泡排序是其中一种很典型而且相对简单的方法。
它的学习同时为后面的选择排序做了铺垫。
通过冒泡实例的学习,可以提高学生的程序设计能力,为今后在算法与程序设计方面的进一步研究和学习打下基础。
二、学情分析本课的授课对象是灵石中学高二选考学生。
学生来自于各个班级走班,学生学习态度,学习水平差距比较大,目前已学习“算法与程序设计”基础内容,具备一定观察、分析和动手实践能力,简单的单层循环能基本理解。
但对于比较复杂的双层循环认知度较低。
因此,对于用自然语言和流程图语言描述的算法,大多能理解,但是,最后落实到用程序设计语言来编写程序,则比较困难。
如何让学生实现自然语言和流程图语言向程序设计语言转化,是比较大的挑战。
三、教学目标及重难点一、教学目标知识目标:掌握冒泡排序的原理;理解冒泡排序的流程图;编写冒泡排序的主要代码;能力目标:学会使用冒泡排序思想设计解决简单排序问题的算法;进一步理解程序设计的基本方法,体会程序设计在现实中的作用;情感目标:培养学生分析问题、发现规律的能力,激发学生学习热情;培养良好的程序书写习惯;二、重点难点重点:理解冒泡排序原理及它的流程图难点:理解冒泡排序中的遍、次等概念(即对变量使用的理解)四、设计思路算法与程序设计,本身是比较枯燥,如果长篇大论讲冒泡排序的原理,变成老师一人在唱独角戏,学生学习就很被动。
高中信息技术《冒泡排序算法》优质课教学设计、教案-CAL-FENGHAI.-(YICAI)-Company One1高一冒泡排序教学设计基本路线:数组-排序-冒泡排序【冒泡排序原理--流程图-算法优化】-小结一、教材分析:本节内容选自浙江教育出版社《算法与程序设计》第五章第三节。
本节课主要讲解冒泡排序思想。
排序算法是使用频率最高的算法之一,而冒泡排序是其中一种很典型而且相对简单的方法。
它的学习同时为后面的选择排序做了铺垫。
教学目标知识目标:掌握冒泡排序的原理;掌握冒泡排序的流程图;能力目标:学会使用冒泡排序思想设计解决简单排序问题的算法;进一步理解程序设计的基本方法,体会程序设计在现实中的作用;进一步学习流程框图的使用。
情感目标:增强分析问题、发现规律的能力,激发学习热情;学情分析通过前面的学习,学生已经了解vb 算法设计的基本知识,学会利用自然语言和流程图描述解决问题的算法,对排序中循环语句以有了一定的基础。
但数组变量的使用方法尚未接触,程序设计思想比较弱,在实际生活中往往忽视运用排序算法来处理实际问题,这就要求学生通过本节课的学习,学会运用冒泡排序算法来处理实际问题,并为以后学习其它排序算法打下基础。
二、重点难点重点:理解冒泡排序原理及它的流程图难点:理解冒泡排序中的遍、次等概念(即对变量使用的理解)以及用流程图描述冒泡排序的过程三、教学策略与手段采用讲解法、演示法、分析归纳法引导学生参与思考,用逐步求精的方式降低学生的理解难度,化抽象为具体,由特殊到一般,有效地突出重点、突破难点。
四、课前准备1.教师的教学准备:冒泡排序的课件、学案、素材2.教学环境的设计与布置:多媒体网络教室、电子白板、多媒体教学平台等五、教学过程课前学习【设计意图】学Th能自己学会的不讲。
排序数组知识点相对简单,由学生自学完成,之前的知识点学生可能会有所遗忘,通过这个方式让学生回顾。
冒泡排序算法原理比较容易也由学生自学完成。
“用循环的思想解决问题—冒泡排序”教学设计【学习目标】1熟练掌握for 循环嵌套2理解冒泡排序的思想3学会用程序实现排序算法【重点】用循环嵌套的思想解决问题【难点】冒泡排序的算法壱、回顾上节课所学的循环案例(1)、Sum=1!+2!+3!…+i!…+n!3 用递归函数实现For i=1 to ns=s+f(i)Next i递归函数function 函数名(变量as 类型)as 类型Function f(n As Integer) As IntegerIf n = 0 Thenf = 1Elsef = n * f(n - 1)End IfEnd Function(2)打印字符图形弐、循环思想在冒泡中的应用6.8 89 16.8 72.8 120 17.2 63 9.81在这些数据中,先找出最大值2在剩余的数中,在找出最大值3重复2,一直到剩下一个数,即完成了排序——如何求n 个数最大值?a(1) a(2) a(3) a(4) ……a(n)首先a(1) a(2)比较,最大值存放在a(2)中然后a(2)a(3),比较,最大值放在a(3)中以此类推,一直到a(n-1)和a(n)比较,最大值放在a(n)中推论:利用a(i)>a(i+1)为判断条件,当条件成立,两个数交换值,否则进行下一轮比较如下图所示:课堂实践18 名学生分别代表a(1)……a(8),分别存储6.8 89 16.8 72.8 120 17.2 63 9.8以其他学生为导演,展示两两相比,交换的过程,如图研究第i 轮时:总结冒泡排序的思路:课堂实践2:完善“冒泡”程序,调试并运行附参考代码:P r i v a t e Sub C o mm a nd1_C li ck()'选择排序——从小到大排序Text1.Text = ""Text2.Text = ""Di m i,j A s I n te g e rDi m t,a(1T o100)A s S i ng l e'定义数组,相当于定义a(1) a(2)……a(10)n=I npu tBo x("请输入n的值","输入n","")For i = 1 To n Step 1a(i)=I npu t B o x("请输入第"&i&"个数字","标题_输入数据","") '输入数据到数组中Next iFor i = 1 To nT e x t1.T e x t=T e x t1.T e x t&a(i)&""'把输入的数据串起来,在text1.text 输出Next i'冒泡排序For i = 1 To n-1For j = 1 To n - iI f a(j)>a(j+1)T h e nt=a(j)a(j)=a(j+1)a(j+1)=tEnd IfNext jNext i'输出数据For i = 1 To nT e x t2.T e x t=T e x t2.T e x t&a(i)&""'把输入的数据串起来,在text1.text 输出Next iEnd Sub三、参考资料1.D im 变量名as 变量类型(i n te g e r、l o ng、si ng l e、d o ub l e、st r i ng、b oo l e a n、d a t e)如:d i m x a s i ng e g e r定义整形的变量xDi m x,y,z a s d o ub l e定义双精度实数变量x y z2.If 条件then 语句1 else 语句2If 条件then语句1语句2……语句nEndif1、If 条件表达式then 语句1 else 语句2开始输入 a 、bYa>b ?Max=bMax=a1条件 ?Step1Then2、If 条件表达式 then 语句Else2Then条件 ?3 例如:求两个数的最大值(设定 a b max 三个 single 类型的变量)输出 max4★★★ F o r i =初始值 t o 终点值 st e p 步长 结束黑箱子 Next i循环变量 i 初始值 向 终点值 进军 ,每一步走 一个步长Step2Step1F o r i =1 to 100 st e p 1(可以省略) 黑箱子 Next iF o r i =100 to 19 st e p -10 黑箱子 Next i5、Do while 条件表达式语句块6.★★★Di m s(1 T o 8) A s S t r i ng '定义字符串数组 s (1)、s(2)……s(8),8 个变量 ★★★N e w _p a ssw o r d =””new_password = new_password +s(i) ' new_password = new_password + s(i)。
冒泡排序教案教学目标:1. 了解冒泡排序算法的原理和基本思想。
2. 掌握冒泡排序的具体实现方法。
3. 能够编写并调试简单的冒泡排序程序。
4. 培养学生的逻辑思维能力和问题解决能力。
教学重点:1. 冒泡排序算法的原理和基本思想。
2. 冒泡排序的具体实现方法。
教学难点:1. 冒泡排序算法的思维转换。
2. 冒泡排序算法的时间复杂度分析。
教学准备:1. 教师:课件、冒泡排序相关的演示材料。
2. 学生:学习工具(笔、纸)、计算器。
教学过程:一、导入(5分钟)1. 引入冒泡排序主题,提出一个问题:如何对一组数字进行排序?2. 让学生回答问题,并展开讨论,引出排序算法的重要性。
二、概念解释(10分钟)1. 解释冒泡排序的基本思想:通过相邻元素之间的比较和交换,将较大(或较小)的元素逐渐“浮”到数列的顶端(或底端)。
2. 解释冒泡排序的实现过程:从第一个元素开始,依次比较相邻的两个元素,如果顺序不正确则交换位置,直至整个数列有序。
3. 通过示意图和具体示例来说明上述概念。
三、算法实现(15分钟)1. 分析冒泡排序的算法流程,将其转化为可执行的伪代码。
2. 编写冒泡排序的具体实现步骤,结合具体示例进行演示。
四、时间复杂度分析(10分钟)1. 解释冒泡排序的时间复杂度:在最坏情况下,冒泡排序需要进行n次(n为待排序元素个数)的比较和交换操作。
2. 计算冒泡排序的平均时间复杂度:通过估算比较和交换操作的次数,得出冒泡排序的平均时间复杂度为O(n^2)。
3. 解释时间复杂度对算法效率的影响,引导学生思考如何改进冒泡排序算法的效率。
五、练习与拓展(15分钟)1. 给出几组无序的数字,要求学生用冒泡排序算法进行排序,并手动记录每一轮的比较和交换过程。
2. 提供更加复杂的排序问题,让学生思考如何利用冒泡排序解决。
六、总结与展望(5分钟)1. 对于冒泡排序算法的基本原理和实现步骤进行简要总结。
2. 引导学生思考冒泡排序算法的优缺点以及可能的改进方向。
c语言冒泡排序课程设计一、课程目标知识目标:1. 理解冒泡排序的基本概念、原理和过程;2. 掌握C语言实现冒泡排序的编程技巧;3. 学会分析冒泡排序的时间复杂度和空间复杂度。
技能目标:1. 能够独立编写C语言冒泡排序程序;2. 能够运用冒泡排序解决实际问题,如数组排序;3. 能够对冒泡排序程序进行调试和优化。
情感态度价值观目标:1. 培养学生的逻辑思维能力和编程兴趣;2. 培养学生面对问题勇于尝试、善于分析、持续优化的精神;3. 增强学生的团队合作意识,学会在团队中分工合作、共同解决问题。
课程性质:本课程为信息技术学科C语言编程部分,针对高中年级学生设计,旨在通过冒泡排序的编程实践,提高学生的编程能力和逻辑思维能力。
学生特点:高中学生已具备一定的数理基础和编程基础,对C语言有一定了解,但对算法的认识尚浅。
教学要求:结合学生特点,注重理论与实践相结合,以实际编程案例为主线,引导学生掌握冒泡排序的核心要点,并能应用于实际问题的解决。
在教学过程中,关注学生的个体差异,提供针对性的指导,确保学生达到预设的学习目标。
通过课程学习,使学生具备独立编程解决问题的能力,培养其逻辑思维和团队协作能力。
二、教学内容1. 引入排序算法的概念,讲解冒泡排序的基本原理和步骤;2. 分析冒泡排序算法的时间复杂度和空间复杂度,讨论其优缺点;3. 结合C语言,详细讲解冒泡排序程序的编写过程,包括变量定义、循环结构、条件判断等;4. 通过案例分析和编程实践,让学生掌握冒泡排序的实现方法,并能应用于实际问题;5. 冒泡排序程序的调试与优化,讲解提高程序运行效率的方法;6. 教学内容的进度安排:a. 第一节课:引入排序算法,讲解冒泡排序基本原理,分析算法复杂度;b. 第二节课:C语言冒泡排序程序编写,案例分析;c. 第三节课:编程实践,学生独立完成冒泡排序程序,并进行调试优化;7. 教材关联内容:a. 《C程序设计》第六章:数组和字符串;b. 《C程序设计》第七章:函数;c. 《C程序设计》第十二章:算法与数据结构。
汇编大作业之冒泡排序班级:学号:姓名:设计日期西安科技大学计算机学院冒泡排序一、实验目的熟悉并能够掌握汇编语言的程序设计及程序调试二、实验内容冒泡排序实现从键盘输入的10个数字的降序排列.1、冒泡排序的思想:冒泡排序法是一种最简单的交换类排序方法,它是通过相邻数据元素的交换逐步将线性表变成有序。
冒泡排序法的基本过程如下:首先,从表头开始往后扫描线性表,在扫描过程中逐次比较相邻两个元素的大小,若相邻两个元素中,前面的元素大于后面的元素,则将它们互换,称之为消去了一个逆序,显然,在扫描过程中,不断地将两个相邻元素中的大者往后移动,最后就将线性表中的最大者换到了表的最后;然后,从后到前扫描剩下的线性表,同样,在扫描过程中逐次比较相邻两个元素的大小,若相邻两个元素中,后面的元素小于前面的元素,则将它们互换,这样就又消去了一个逆序,显然,在扫描过程中,不断地将两相邻元素中的小者往前移动,最后就将剩下线性表中的最小者换到了表的最前面;对剩下的线性表重复上述过程,直到剩下的线性表变空为止,此时的线性表已经变为有序。
在上述排序过程中,对线性表的每一次来回扫描,都将其中的最大者放到了表的最后,最小者像气泡一样冒到表的开头,因此这种排序叫做冒泡排序。
2、debug相关知识命令格式命令格式汇编 A [地址] 命名N [设备:][路径]文件名[.扩展名]比较 C [范围] 输出O 口地址转出 D [范围]或[地址] 继续执行P [=地址][值]键入 E 地址[表] 退出Q填入 F 范围表寄存器R [寄存器]执行G [=地址][地址[地址...]] 搜索S 范围表十六进制H 值值跟踪T [=地址]或[范围]输入I 口地址反汇编U [地址]或[范围]装入L [地址][设备扇区,扇区]] 写W [地址[设备扇区,扇区]]3、参加测试的10个数据:1,2,3,5,4,26,9,3,0三、程序流程图四、冒泡汇编源程序DATA SEGMENTA DW 12H,13H,14H,15H,16H,17H,18H,19H,20H,22H Z DW 6DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START:PUSH DSSUB AX , AXPUSH AXMOV AX,DATAMOV DS,AXMOV CX,ZCALL FAR PTR MAINMOV AH,4CHINT 21HMAIN PROC FARDEC CXLOOP1: MOV DI,CXMOV BX,0LOOP2:MOV AX,A[BX]CMP AX,A[BX+2]JGE COTINUEXCHG AX,A[BX+2]MOV A[BX],AXCOTINUE: ADD BX,2LOOP LOOP2MOV CX,DILOOP LOOP1RETMAIN ENDPCODE ENDSEND START五、运行结果生成obj文件,生成exe文件,进行调试输入测试数据六、实验总结综合型实验最锻炼我们的能力,做的过程中每实现一个小功能都很有成就感,遇到难题,大家一切讨论共同提高,收益颇多,熟悉了汇编编程的BEGUG 过程,了解掌握汇编程序设计的方法步骤,与此同时,也暴露出学习中的盲点,弥补了不足。
一、实验目的1. 掌握循环程序的设计方法;2. 了解循环结构在程序中的重要作用起泡排序程序。
二、实验原理及基本技术路线图(方框原理图)循环结构分DO_WHILE和DO_UNTIL两种,无论使用哪种循环结构,循环程序一般应包括以下几部分:①循环初始化。
它包括设置循环次数的初始值、地址指针的初始设置等。
②循环体。
这是循环工作的主体,包括要重复执行的操作,以及循环的修改部分。
修改部分包括地址指针的修改、循环控制条件的修改等。
③循环控制部分。
它是控制循环的关键,判断循环条件满足与否。
特别要注意循环入口和循环次数的正确设置、地址指针及循环控制条件的修改等。
否则会得不到期望的结果。
以下为冒泡算法的流程图:三、所用仪器、材料(设备名称、型号、规格等)1. 操作系统平台:Windows Server 20032. 汇编环境:Microsoft MASM 5.03. 文本编辑器:记事本四、实验方法、步骤1. 将MASM5.0的文件置于C:\assembly\目录下;2. 将masm.exe和link.exe所在目录(C:\assembly\MASM5)添加到Path环境变量中;3.在C:\assembly\下新建一个bubble.asm文件,打开bubble.asm,输入汇编程序代码;4. 运行一个命令行窗口,将当前目录切换到C:\assembly\,然后输入命令:masm bubble.asm [Enter],来汇编程序,根据汇编结果查看程序代码是否有语法错误,如有,则更正保存后重新汇编,直至没有错误为止,此时会生成bubble.obj文件;5. 输入命令:link bubble.obj [Enter],观察输出结果,如果没有错误,则生成bubble.exe;6. 输入命令:debug bubble.exe [Enter],调试程序,并记录运行过程;7. 完成实验报告。
五、实验过程原始记录(数据、图表、计算等)1. 将C:\assembly\MASM5目录添加到Path环境变量中:2. 新建名为bubble.asm的文件,输入汇编程序代码:程序源码:STACKSG SEGMENT STACK 'S'DW 64 DUP('ST')STACKSG ENDSDATA SEGMENTARY DW 5,7,1,4,3,6,9,8,2 ;数组,流程图中为ACT EQU ($-ARY)/2 ;元素个数DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACKSG MAIN PROC FARMOV AX,DATAMOV DS,AXMOV DI,CT-1 ;初始化外循环次数LOP1: MOV CX,DI ;置内循环次数MOV BX,0 ;置地址指针LOP2: MOV AX,ARY[BX]CMP AX,ARY[BX+2] ;两数比较JGE CONT ;次序正确转XCHG AX,ARY[BX+2] ;次序不正确互换位置MOV ARY[BX],AXCONT: ADD BX,2 ;修改地址指针LOOP LOP2 ;内循环控制DEC DI ;修改外循环次数JNZ LOP1 ;外循环控制MOV AX,4C00HINT 21HMAIN ENDPCODE ENDSEND MAIN3. 汇编源程序:4. 连接生成可执行文件:5.调试程序:(1)初始化外循环次数(DI)=0008H(2)置内循环次数和地址指针(3)第一趟第一次比较,因为5<7,故互换位置,进行下一次比较(5)修改地址指针,继续内循环(6)第一趟第二次比较,因为5>1,故直接更改地址指针,进行下一次比较(7)第一趟第三次比较,因为1<4,故互换位置,进行下一次比较(8)第一趟第四次比较,因为1<3,故互换位置,进行下一次比较(9)第一趟第五次比较,因为1<6,故互换位置,进行下一次比较(10)第一趟第六次比较,因为1<9,故互换位置,进行下一次比较(11)第一趟第七次比较,因为1<8,故互换位置,进行下一次比较(12)第一趟第八次比较,因为1<2,故互换位置(13)第一趟循环结束,最小数1被交换至数组的最后位置(14)第二趟循环结束,次小数2被交换至数组的倒数第二个位置(15)第三趟循环结束,数字3归位(16)第四趟循环结束,数字4归位(17)第五趟循环结束,数字5归位(19)第七趟循环结束,数字7归位(20)第八趟循环结束,数字8归位(22)排序结束,程序退出六、实验结果、分析和结论(误差分析与数据处理、成果总结等。