-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathInsertion_Sort.php
45 lines (37 loc) · 1.17 KB
/
Insertion_Sort.php
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
/**
* Insertion Sort
*
* Time Complexity: O(n^2)
*/
function insertionSort(&$arr) {
$n = count($arr);
for ($i = 1; $i < $n; $i++) {
$val = $arr[$i];
$j = $i-1;
while ($j >= 0 && $arr[$j] > $val) {
$arr[$j + 1] = $arr[$j];
$j--;
}
$arr[$j + 1] = $val;
}
}
// ----------------
// --- Examples ---
// ----------------
define("NL", PHP_SAPI === 'cli' ? "\n" : "<br />"); // define new line feed based on web/cli
$a = [4, -5, 1, -2, 6, 8, 11, -3, 0];
$aStringPreSort = '[' . implode(', ', $a) . ']';
insertionSort($a);
$aStringPostSort = '[' . implode(', ', $a) . ']';
printf("insertionSort(%s) = %s" . NL, $aStringPreSort, $aStringPostSort);
$a = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0];
$aStringPreSort = '[' . implode(', ', $a) . ']';
insertionSort($a);
$aStringPostSort = '[' . implode(', ', $a) . ']';
printf("insertionSort(%s) = %s" . NL, $aStringPreSort, $aStringPostSort);
$a = [-5, 4, 8, -12, -100, 99, 56, 150];
$aStringPreSort = '[' . implode(', ', $a) . ']';
insertionSort($a);
$aStringPostSort = '[' . implode(', ', $a) . ']';
printf("insertionSort(%s) = %s" . NL, $aStringPreSort, $aStringPostSort);