Sorting algorithms/Shell sort: Difference between revisions
Content added Content deleted
No edit summary |
No edit summary |
||
Line 807: | Line 807: | ||
1 2 3 4 5 6</lang> |
1 2 3 4 5 6</lang> |
||
=={{header|Objeck}}== |
|||
{{trans|C}} |
|||
<lang objeck> |
|||
bundle Default { |
|||
class ShellSort { |
|||
function : Main(args : String[]) ~ Nil { |
|||
a := [1, 3, 7, 21, 48, 112,336, 861, 1968, 4592, 13776,33936, 86961, 198768, 463792, 1391376,3402672, 8382192, 21479367, 49095696, 114556624,343669872, 52913488, 2085837936]; |
|||
Shell(a); |
|||
each(i : a) { |
|||
IO.Console->Print(a[i])->Print(", "); |
|||
}; |
|||
IO.Console->PrintLine(); |
|||
} |
|||
function : Shell(a : Int[]) ~ Nil { |
|||
increment := a->Size() / 2; |
|||
while(increment > 0) { |
|||
for(i := increment; i < a->Size(); i += 1;) { |
|||
j := i; |
|||
temp := a[i]; |
|||
while(j >= increment & a[j - increment] > temp) { |
|||
a[j] := a[j - increment]; |
|||
j -= increment; |
|||
}; |
|||
a[j] := temp; |
|||
}; |
|||
if(increment = 2) { |
|||
increment := 1; |
|||
} |
|||
else { |
|||
increment *= (5.0 / 11); |
|||
}; |
|||
}; |
|||
} |
|||
} |
|||
} |
|||
</lang> |
|||
=={{header|OCaml}}== |
=={{header|OCaml}}== |