diff --git a/src/BinaryTree.php b/src/BinaryTree.php index a83093b..cdb323a 100644 --- a/src/BinaryTree.php +++ b/src/BinaryTree.php @@ -16,7 +16,8 @@ public static function sort(array $arr): array return []; } $tree = new Tree($arr[0]); - for ($i = 1; $i < count($arr); $i++) { + $length = count($arr); + for ($i = 1; $i < $length; $i++) { $tree->put($arr[$i]); } diff --git a/src/Bubblesort.php b/src/Bubblesort.php index 23062a4..b870699 100644 --- a/src/Bubblesort.php +++ b/src/Bubblesort.php @@ -21,11 +21,12 @@ public static function sort(array $arr, String $method = "variant1"): array */ private static function variant1(array $arr): array { + $length = count($arr); /** * * @var int[] $arr */ - for ($j = count($arr) - 1; $j > 0; $j--) { + for ($j = $length - 1; $j > 0; $j--) { for ($i = 0; $i < $j; $i++) { if ($arr[$i] > $arr[$i + 1]) { [$arr[$i], $arr[$i + 1]] = [$arr[$i + 1], $arr[$i]]; @@ -42,8 +43,9 @@ private static function variant1(array $arr): array */ private static function variant2($arr): array { - for ($i = 0; $i < count($arr); $i++) { - for ($j = 0; $j < count($arr); $j++) { + $length = count($arr); + for ($i = 0; $i < $length; $i++) { + for ($j = 0; $j < $length; $j++) { if ($arr[$i] < $arr[$j]) { $tmp = $arr[$i]; $arr[$i] = $arr[$j]; @@ -61,8 +63,9 @@ private static function variant2($arr): array */ private static function variant3($arr): array { - for ($i = 0; $i < count($arr); $i++) { - for ($j = $i; $j < count($arr); $j++) { + $length = count($arr); + for ($i = 0; $i < $length; $i++) { + for ($j = $i; $j < $length; $j++) { if ($arr[$i] > $arr[$j]) { $tmp = $arr[$i]; $arr[$i] = $arr[$j]; @@ -80,9 +83,10 @@ private static function variant3($arr): array */ private static function variant4($arr): array { + $length = count($arr); do { $check = false; - for ($i = 0; $i < count($arr) - 1; $i++) { + for ($i = 0; $i < $length - 1; $i++) { if ($arr[$i] > $arr[$i + 1]) { $tmp = $arr[$i]; $arr[$i] = $arr[$i + 1]; @@ -101,9 +105,10 @@ private static function variant4($arr): array */ private static function variant5($arr): array { + $length = count($arr); do { $check = false; - for ($i = 0; $i < count($arr) - 1; $i++) { + for ($i = 0; $i < $length - 1; $i++) { if ($arr[$i] > $arr[$i + 1]) { [$arr[$i], $arr[$i + 1]] = [$arr[$i + 1], $arr[$i]]; $check = true; diff --git a/src/InsertionSort.php b/src/InsertionSort.php index a7a571f..43c30e7 100644 --- a/src/InsertionSort.php +++ b/src/InsertionSort.php @@ -20,8 +20,9 @@ public static function sort(array $arr, String $method = "variant1"): array */ private static function variant1(array $arr): array { + $length = count($arr); // iterate over all elements - for ($i = 1; $i < count($arr); $i++) { + for ($i = 1; $i < $length; $i++) { // safe current element of iteration $element = $arr[$i]; // loop over already passed array @@ -46,12 +47,13 @@ private static function variant1(array $arr): array */ private static function variant2(array $arr): array { + $length = count($arr); // start from the first array and iterate over all - for ($i = 0; $i < count($arr); $i++) { + for ($i = 0; $i < $length; $i++) { // assume the first element is the smallest $index = $i; // loop over the rest of the array - for ($j = $i; $j < count($arr); $j++) { + for ($j = $i; $j < $length; $j++) { // check if the current element is smaller if ($arr[$j] < $arr[$index]) { // replace the saved index diff --git a/src/MergeSort.php b/src/MergeSort.php index bd76b7c..3f81525 100644 --- a/src/MergeSort.php +++ b/src/MergeSort.php @@ -10,10 +10,11 @@ class MergeSort */ public static function sort(array $arr): array { - if (count($arr) <= 1) { + $length = count($arr); + if ($length <= 1) { return $arr; } - $middle = (int)(count($arr) / 2); + $middle = (int)($length / 2); $left = array_splice($arr, 0, $middle); $left = self::sort($left); $right = self::sort($arr); @@ -31,7 +32,9 @@ public static function merge(array $left, array $right) $i = 0; $j = 0; $result = []; - while ($i < count($left) && $j < count($right)) { + $lengthLeft = count($left); + $lengthRight = count($right); + while ($i < $lengthLeft && $j < $lengthRight) { if ($left[$i] < $right[$j]) { $result[] = $left[$i]; $i++; @@ -40,10 +43,10 @@ public static function merge(array $left, array $right) $j++; } } - for (; $i < count($left); $i++) { + for (; $i < $lengthLeft; $i++) { $result[] = $left[$i]; } - for (; $j < count($right); $j++) { + for (; $j < $lengthRight; $j++) { $result[] = $right[$j]; } diff --git a/src/QuickSort.php b/src/QuickSort.php index fbab25c..5267daf 100644 --- a/src/QuickSort.php +++ b/src/QuickSort.php @@ -16,7 +16,8 @@ public static function sort(array $arr): array $pivot = $arr[0]; $right = []; $left = []; - for ($i = 1; $i < count($arr); $i++) { + $length = count($arr); + for ($i = 1; $i < $length; $i++) { if ($arr[$i] < $pivot) { $right[] = $arr[$i]; } else {