Skip to content

Commit 576a6bd

Browse files
committed
Selection Sort BugFix
1 parent 4cbf48e commit 576a6bd

File tree

1 file changed

+7
-12
lines changed

1 file changed

+7
-12
lines changed

src/Algorithm/Sorting/SelectionSort.php

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -41,27 +41,22 @@ class SelectionSort implements ISortable {
4141
*
4242
* Actually works only with numeric indices
4343
*
44-
* TODO implement non-numerical indices
45-
*
4644
* @param array $array
4745
* @return array
4846
*/
4947
public function sort(array $array): array {
48+
$array = \array_values($array);
5049
$length = \count($array);
5150
for ($i = 0; $i < $length; $i++) {
52-
if (!isset($array[$i])) {
53-
continue;
54-
}
51+
$min = $i;
5552
for ($j = $i; $j < $length; $j++) {
56-
if (!isset($array[$j])) {
57-
continue;
58-
}
59-
if (Comparator::greaterThan($array[$i], $array[$j])) {
60-
$tmp = $array[$i];
61-
$array[$i] = $array[$j];
62-
$array[$j] = $tmp;
53+
if (Comparator::lessThan($array[$j], $array[$min])) {
54+
$min = $j;
6355
}
6456
}
57+
$tmp = $array[$min];
58+
$array[$min] = $array[$i];
59+
$array[$i] = $tmp;
6560
}
6661
return $array;
6762
}

0 commit comments

Comments
 (0)