procedure ShellSort(var AA: Array of Integer); var i, j, x, nTmp: Integer; begin x := 1; nTmp := High(AA) div 9; while (x <= nTmp) do x := (x * 3) + 1; while (x > 0) do begin for i := x to High(AA) do begin nTmp := AA[i]; j := i; while (j >= x) and (nTmp < AA[j - x]) do begin AA[j] := AA[j - x]; Dec(j, x); end; AA[j] := nTmp; end; x := x div 3; end; end;
转一个希尔排序
--------------------------------------------------------------------------------------------------
作者:黑暗煎饼果子
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
--------------------------------------------------------------------------------------------------