Реализации алгоритмов/Сортировка/Шелла: различия между версиями

Содержимое удалено Содержимое добавлено
Недоработка в алгоритме для Pascal
→‎Object Pascal (Delphi): Добавил использование Седжвика
Строка 194:
== Object Pascal (Delphi) ==
 
var
procedure ShellSort(var Arr : TReal1DArray; N : Integer);
incr: array [0..23] of integer = (1, 4, 10, 23, 57, 145, 356, 911, 1968, 4711,
//Arr -массив N -количество элементов в массиве (размер)
11969, 27901, 84801, 213331, 543749, 1355339, 3501671, 8810089, 21521774,
var
8548857, 157840433, 410151271, 1131376761, 2147483647);
C : Boolean;
 
G : Integer;
type arInt = array of integer;
I : Integer;
procedure ShellSort(var Arr : TReal1DArray; N : IntegerarInt);
J : Integer;
var
Tmp : Double;
C C: Boolean;
begin
g G:= n div 2Integer;
G I: Integer;
I J: Integer;
J Tmp: Integer;
len: Integer;
cur_inc: integer;
begin
len := Length(Arr) - 1;
cur_inc := 0;
while 3 * incr[cur_inc + 1] <= Length(Arr) do
inc(cur_inc);
repeat
g := incr[cur_inc];
Tmpi := Doubleg;
repeat
j := i :=- g;
c := repeatTrue;
j := i-g;repeat
if arr[j] >= arr[j c+ :=g] True;then
c := repeatFalse
inc(i);else
if Arr[j]<=Arr[j+g] then
begin
cTmp := FalseArr[j];
Arr[j] := endArr[j+g];
Arr[j+g] := elseTmp;
beginend;
dec(j, Tmp := Arr[j]g);
until not ((j >= 0) and Arr[j] := Arr[j+g]C);
until not inc(g>0i);
Arr[j+g] := Tmp;
until not (i <= endlen);
dec(j, gcur_inc);
until not ((jcur_inc <>=0) and C-1);
end;
inc(i);
until not (i<=n);
g := g div 2;
until not (g>0);
end;
 
== PHP ==