好文档 - 专业文书写作范文服务资料分享网站

高中信息技术全国青少年奥林匹克联赛教案排序算法

天下 分享 时间: 加入收藏 我要投稿 点赞

全国青少年信息学奥林匹克联赛

排序算法

一、插入排序 (Insertion Sort)

1. 基本思想:

每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适

当位置,使数列依然有序;直到待排序数据元素全部插入

完为止。

2. 排序过程:【示例】:

[ 初始关键字 ] [49] 38 65 97 76 13 27 49

J=2(38) [38 49] 65 97 76 13 27 49

J=3(65) [38 49 65] 97 76 13 27 49

J=4(97) [38 49 65 97] 76 13 27 49

J=5(76) [38 49 65 76 97] 13 27 49

J=6(13) [13 38 49 65 76 97] 27 49

J=7(27) [13 27

38 49 65 76 97] 49

J=8(49) [13 27 38 49 49 65 76 97]

Procedure InsertSort(Var R : FileType);

// 对 R[1..N] 按递增序进行插入排序

, R[0] 是监视哨 //

Begin

for I := 2 To N Do

// 依次插入

R[2],...,R[n]//

begin

R[0] := R[I]; J := I - 1;

While R[0] < R[J] Do

// 查找 R[I] 的插入位置 //

begin

R[J+1] := R[J];

// 将大于 R[I] 的元素后移J:=J-1 end

R[J + 1] := R[0] ;

// 插入

R[I] //

end

End; //InsertSort //

//

二、选择排序

1. 基本思想:

每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排

好序的数列的最后,直到全部待排序的数据元素排完。

2. 排序过程:

【示例】:

初始关键字 [49 38 65 97 76 13 27 49]

第一趟排序后 13 [ 38 65 97 76 49 27 49] 第二趟排序后 13 27 [65 97 76 49 38 49] 第三趟排序后 13 27 38 [97 76 49 65 49] 第四趟排序后 13 27 38 49 [49 97 65 76] 第五 趟排序后 13 27 38 49 49 [97 97 76] 第六趟排序后 13 27 38 49 49 76 [76 97] 第七趟排序后 13 27 38 49 49 76 76 [ 97] 最后排序结果 13 27 38 49 49 76 76 97

Procedure SelectSort(Var R : FileType);

// 对 R[1..N] 进行直接选择

排序 //

Begin

for I := 1 To N - 1 Do

// 做 N -

1 趟选择排序 //

begin

K:=I;

For J := I + 1 To

N Do R[K]//

// 在当前

无序区 R[I..N] 中选最小的元素

begin

If R[J] < R[K] Then K := J

end;

If K <> I Then // 交

换 R[I] 和 R[K] //

begin Temp := R[I]; R[I] := R[K]; R[K] := Temp; end;

end

End.

//Se

lectSort //

三、冒泡排序 (BubbleSort) 1. 基本思想:

两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交

换,直到没有反序的数据元素为止。

2. 排序过程:

设想被排序的数组

R[ 1..N ]垂直竖立,将每个数据元素看作有重量的气泡,根

R,凡扫描到违反本原则的轻

据轻气泡不能在重气泡之下的原则,从下往上扫描数组

气泡,就使其向上 \漂浮 \,如此反复进行,直至最后任何两个气泡都是轻者在上,

重者在下为止。

【示例】:

49 13 13 13 13 13 13 13

38 49 27 27 27 27 27 27

65 38 49 38 38 38 38 38

97 65 38 49 49 49 49 49

76 97 65 49 49 49 49 49

13 76 97 65 65 65 65 65

27 27 76 97 76 76 76 76

49 49 49 76 97 97 97 97

Procedure BubbleSort(Var R : FileType) //

从下往上扫描的起泡排序

//

Begin

For I := 1 To N-1 Do

// 做 N-1 趟排序 //

begin

NoSwap := True;

// 置未排序的标志

//

For J := N - 1 DownTo 1 Do

// 从底部往上扫描

//

begin

If R[J+1]< R[J] Then

// 交换元素 //

begin

Temp := R[J+1]; R[J+1 := R[J]; R[J] := Temp;

NoSwap := False

高中信息技术全国青少年奥林匹克联赛教案排序算法

全国青少年信息学奥林匹克联赛排序算法一、插入排序(InsertionSort)1.基本思想:每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当位置,使数列依然有序;直到待排序数据元素全部插入完为止。2.排序过程:【示例】:[初始关
推荐度:
点击下载文档文档为doc格式
0dne04dwj00daes3y3831emx02sb1m00vpn
领取福利

微信扫码领取福利

微信扫码分享