-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathshellsort.php
More file actions
31 lines (26 loc) · 754 Bytes
/
shellsort.php
File metadata and controls
31 lines (26 loc) · 754 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
function shell_sort(&$a) {
$count = count($a);
$columns = 1;
while ($columns < $count) {
$columns = $columns * 2 + 1;
}
$columns = ($columns - 1) / 2;
while ($columns > 0) {
for ($c = 0; $c < $columns; $c++) {
for ($i = $columns; $i < $count; $i += $columns) {
$value = $a[$i];
for ($x = $i - $columns;( ($x >= 0) && ($a[$x] > $value) );
$x -= $columns) {
$a[$x + $columns] = $a[$x];
}
$a[$x + $columns] = $value;
}
}
$columns = ($columns - 1) / 2;
}
}
$values = array(8, 2, 5, 9, 1);
shell_sort($values);
foreach ($values as $v) { echo "{$v} "; }
?>