一、插入排åº?/p>
(Insertion Sort)
1.
基本思想ï¼?/p>
每次将一个待排序的数据元素,
插入到前面已经排好序的数列中的适当位置ï¼?/p>
使数列依然有
序;直到待排序数据元素全部插入完为止ã€?/p>
2.
排序过程ï¼?/p>
【示例ã€?/p>
ï¼?/p>
[
初始关键å?/p>
] [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]
�/p>
�/p>
Procedure InsertSort(Var R : FileType);
�/p>
//
�/p>
R[1..N]
按递增序进行插入排åº?/p>
, R[0]
是监视哨
//
�/p>
Begin
�/p>
for I := 2 To N Do //
依次插入
R[2],...,R[n]//
�/p>
begin
�/p>
R[0] := R; J := I - 1;
�/p>
While R[0] < R[J] Do //
查找
R
的插入位ç½?/p>
//
�/p>
begin
�/p>
R[J+1] := R[J]; //
将大äº?/p>
R
的元素后ç§?/p>
//
�/p>
J := J - 1
�/p>
end
�/p>
R[J + 1] := R[0] ; //
插入
R //
�/p>
end
�/p>
End; //InsertSort //
复制代码