交替从左右开始扫描
第一遍:从右到左扫描排序把最小元素方第一位
第二遍:从左到右扫描排序把最大元素方最后位
第三遍:从右到左扫描排序把第二小元素方第二位
第四遍:从左到右扫描排序把第二大元素方倒数第二位
TargetArr为要排序取中位数的数组;
nmax为数组中的数值个数
function sort(var TargetArr:array of Double;nMax:Integer);
var
R,L,i : Integer;
Temp : Integer;
begin
R:=0;
L:=nMax-1;
while R
//从右到左扫描
for i :=L downto R+1 do
begin
if TargetArr[i]
Temp := TargetArr[i];
TargetArr[i] := TargetArr[i-1];
TargetArr[i-1] := Temp;
end;
end;
Inc(R);//缩小下次扫描范围
//从左到右扫描
for i:=R+1 to L do
begin
if TargetArr[i]
Temp := TargetArr[i];
TargetArr[i] := TargetArr[i-1];
TargetArr[i-1] := Temp;
end;
end;
Dec(L);//缩小下次扫描范围
end;
end;