冒泡排序算法精讲
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
排序算法
【教学目标】
1、理解排序的概念
2、了解常用排序方法
3、理解冒泡排序的基本思路
4、应用冒泡排序法进行排序
【重点难点】
1、冒泡排序法的基本思路
2、应用冒泡排序法进行排序
排序的概念:
排序就是把一组元素(数据或记录)按照元素的值的递增或递减的次序重新排列元素的过程。
女口:49 38 76 27 13
常用排序的方法:
1、冒泡排序:冒泡排序是一种简单而饶有趣味的排序方法,它的基本思想是:每次仅进行
相邻两个元素的比较,凡为逆序( a(i)>a(i+1)),则将两个元素交换。
2、插入排序:它是一种最简单的排序方法,它的基本思想是依次将每一个元素插入到一个
有序的序列中去。这很象玩扑克牌时一边抓牌一边理牌的过程,抓了一张就插到其相应的位置上去。
3、选择排序:这是一种比较简单的排序方法,其基本思想是,每一趟在n-i+1 ( i=1,2,
3,…,n-1 )个元素中选择最小的元素。
冒泡排序:
冒泡排序是一种简单而饶有兴趣的排序方法,它的基本思想是:每次进行相邻两个元素
的比较,凡为逆序(即a(i)>a(i+1)),则将两个元素交换。
整个的排序过程为:
先将第一个元素和第二个元素进行比较,若为逆序,则交换之;接着比较第二个和第三
个元素;依此类推,直到第n-1个元素和第n个元素进行比较、交换为止。如此经过一趟排序,使最大的元素被安置到最后一个元素的位置上。然后,对前n-1个元素进行同样的操作,使次大的元素被安置到第n-1个元素的位置上。重复以上过程,直到没有元素需要交换为止。
例题:对49 38 76 27 13进行冒泡排序的过程:
初始状态:[49 38 76 27 13 ]
第一趟排序后:[38 49 27 13] 76
第二趟排序后:[38 27 13 ] 49 76
第三趟排序后:[27 13 ] 38 49 76
第四趟排序后:13 27 38 49 76
课堂练习:
用冒泡排序对68 45 35 75 55 17 41 进行排序,第二趟排序后的状态为:
A、45 35 68 55 17 41 75
B、35 17 41 45 55 68 75
C、35 45 55 17 41 68 75
D、35 45 17 41 55 68 75
作业:
1、以下两组数据按有小到大排序,请写出每一趟排序后的结果
45 82 12 75 13 89 95
90 87 76 65 54 43 32 21
2、以下两组数据按有大到小排序,请写出每一趟排序后的结果
4552
1218
854632
12233445566778 89
91
拓展:
随机生成10个不同的整数存于数组 a (1 to 10 )中,按从小到大的顺序输出。
冒泡排序:
冒泡排序是一种简单而饶有兴趣的排序方法,它的基本思想是:每次进行相邻两个元素
的比较,凡为逆序(即a(i)>a(i+1)),则将两个元素交换。
整个的排序过程为:
先将第一个元素和第二个元素进行比较,若为逆序,则交换之;接着比较第二个和第三
个元素;依此类推,直到第n-1个元素和第n个元素进行比较、交换为止。如此经过一趟排序,使最大的元素被安置到最后一个元素的位置上。然后,对前n-1个元素进行同样的操作,使次大的元素被安置到第n-1个元素的位置上。重复以上过程,直到没有元素需要交换为止。
例题:对49 38 76 27 13进行冒泡排序的过程:
初始状态:[49 38 76 27 13 ]
第一趟排序后:[38 49 27 13] 76
第二趟排序后:[38 27 13 ] 49 76
第三趟排序后:[27 13 ] 38 49 76
第四趟排序后:13 27 38 49 76
排序算法编程相关知识:
1、数组的定义:
声明数组的一般格式如下:
Dim数组名([下界to ]上界)As数据类型
2、数组元素的输入输出:
(1 )生成随机整数(1-100之间)
Ran domize
for i=1 to n
a(i)=in t(rnd*100+1)
n ext i
(2 )输出数组元素
for i=1 to n
print a(i);
n ext i
3、冒泡排序的算法实现:
冒泡排序是一种简单而饶有兴趣的排序方法,它的基本思想是:
每次进行相邻两个元素的比较,凡为逆序(即a(i)>a(i+1)),则将两个元素交换。
用两个FOR循环实现:
for j=n-1 to 1 step -1
for i=1 to j
if a(i)>a(i+1) then
t=a(i)
a(i)=a(i+1)
a(i+1)=t
end if
next i
n ext j
应用:
1、随机生成10个不同的整数存于数组a( 1 to 10 )中,按从小到大的顺序输出。
2、随机生成20个学生的考试成绩,其中前50%的学生可以参加夏令营。输出这50%的学生的成绩。
3、数组A和数组B分别记录6个数据,现在要把这两个数组合并成一个有序的数组。(从大到小的顺序)