冒泡排序算法精讲

  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、以下两组数据按有大到小排序,请写出每一趟排序后的结果

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个数据,现在要把这两个数组合并成一个有序的数组。(从大到小的顺序)

相关文档
最新文档