Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/BinaryTree.php
Original file line number Diff line number Diff line change
Expand Up @@ -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]);
}

Expand Down
19 changes: 12 additions & 7 deletions src/Bubblesort.php
Original file line number Diff line number Diff line change
Expand Up @@ -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]];
Expand All @@ -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];
Expand All @@ -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];
Expand All @@ -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];
Expand All @@ -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;
Expand Down
8 changes: 5 additions & 3 deletions src/InsertionSort.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
13 changes: 8 additions & 5 deletions src/MergeSort.php
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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++;
Expand All @@ -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];
}

Expand Down
3 changes: 2 additions & 1 deletion src/QuickSort.php
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Loading