内容正文:
排序算法
2
排序的意义
排序是为了将一组杂乱的数据变成一组有序的数据。(递增或递减)
(1)冒泡排序
4
理解:冒泡排序是在一列数据中把较小(或较大)的数据逐次向上(或向下)推移的一种排序技术。
操作【目标:从小到大】把待排序的n个元素看成垂直堆放的一列数据,从最下面的一个元素开始,自下而上地比较相邻的两个元素,将较小的换到上面,直到比较完所有数据,称为一遍加工(遍历),每次遍历完成对1个数据的排位,即一趟遍历能确定这n个元素中最小的一个,它将被逐次升到第1个位置。然后再对尚未确定位置的n-1个数据作相同的操作,确定这n-1个数据是最小者的位置,它应该是排在前次遍历确定位置的元素之后;再进行第3次遍历……直至处理完n-1个数据,即确定n-1个数据的位置(n-1个数据的位置确定,则最后一个数据的位置也就确定了),排序结束。
冒泡排序
5
现在有一待排数组d{27,36,32,18},欲对之进行冒泡排序(从小到大)。
6
27
36
32
18
d (1)
d (2)
d (3)
d (4)
j
j-1
27
36
18
32
j
j-1
27
18
36
32
j
j-1
18
27
36
32
第1次冒泡排序时 j 从 4 开始到 2本趟遍历比较次数:3
冒泡排序演示
18
j=4
j=3
j=2
18的位置确定
For j= 4 to 2 Step -1
if d(j)<d(j-1) then 交换
Next j
冒泡排序演示
7
第2次冒泡排序时 j 从 4 开始到3
本趟遍历比较次数:2
18
27
36
32
d (1)
d (2)
d (3)
d (4)
j
j-1
18
27
32
36
j
j-1
18
27
32
36
冒泡排序演示
j=4
j=3
27
27的位置确定
不需要交换27和32的位置
For j= 4 to 3 Step -1
if d(j)<d(j-1) then 交换
Next j
8
18
27
32
36
d (1)
d (2)
d (3)
d (4)
j
j-1
18
27
32
36
j=4
不需要交换32和36的位置
32
32的位置确定,36的位置也确定
For j= 4 to 4 Step -1
if d(j)<d(j-1) then 交换
Next j
第3次冒