冒泡排序算法精讲

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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、以下两组数据按有大到小排序,请写出每一趟排序后的结果

45 52 12 18 85 46 32

12 23 34 45 56 67 78 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之间)

Randomize

for i=1 to n

a(i)=int(rnd*100+1)

next i

(2)输出数组元素

for i=1 to n

print a(i);

next 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

next j

应用:

1、随机生成10个不同的整数存于数组a(1 to 10)中,按从小到大的顺序输出。

2、随机生成20个学生的考试成绩,其中前50%的学生可以参加夏令营。输出这50%的学生的成绩。

3、数组A和数组B 分别记录6个数据,现在要把这两个数组合并成一个有序的数组。(从大到小的顺序)

相关文档
最新文档