File tree 1 file changed +7
-12
lines changed
1 file changed +7
-12
lines changed Original file line number Diff line number Diff line change @@ -41,27 +41,22 @@ class SelectionSort implements ISortable {
41
41
*
42
42
* Actually works only with numeric indices
43
43
*
44
- * TODO implement non-numerical indices
45
- *
46
44
* @param array $array
47
45
* @return array
48
46
*/
49
47
public function sort (array $ array ): array {
48
+ $ array = \array_values ($ array );
50
49
$ length = \count ($ array );
51
50
for ($ i = 0 ; $ i < $ length ; $ i ++) {
52
- if (!isset ($ array [$ i ])) {
53
- continue ;
54
- }
51
+ $ min = $ i ;
55
52
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 ;
63
55
}
64
56
}
57
+ $ tmp = $ array [$ min ];
58
+ $ array [$ min ] = $ array [$ i ];
59
+ $ array [$ i ] = $ tmp ;
65
60
}
66
61
return $ array ;
67
62
}
You can’t perform that action at this time.
0 commit comments