selectionSort<E> function
Sorts the list of numbers using the
selection sort algorithm.
Parameters
listis any list of items to be sorted.- To perform partial sorting, you can specify the
beginorend. beginis the start index of the range to be sorted.- If
beginis negative, range starts at the 0 - If
beginis not below the length of thelist, range will be empty. endis the final index if the range to be sorted. It is exclusive.- If
endis above the length of thelist, it will be ignored. - If
endis negative, the absolute value of it will be subtracted from the length of thelistto determine where the range ends. - If
endis not greater than thebegin, the range will be empty. compareis a custom compare to order the list elements. If it is null andlistitems are not Comparable, TypeError is thrown.
Details
The selection sort algorithm sorts the list in an increasing order by
finding the minimum element from the unordered range and putting it at
the beginning in each iteration.
Although, it is faster than bubble sort, it requires more comparisons than other O(n^2) algorithms such as insertion sort. Therefore, it is not very useful in practice.
Complexity: Time O(n^2) | Space O(1)
Implementation
void selectionSort<E>(
List<E> list, {
int? begin,
int? end,
Comparator<E>? compare,
}) {
int b, e;
int n = list.length;
// Find the range given the parameters.
b = 0;
e = n;
if (begin != null && b < begin) {
b = begin;
}
if (end != null && end < e) {
e = end;
if (e < 0) e += n;
}
if (compare == null) {
selectorSortDefault(list, b, e);
} else {
selectorSortCustom(list, b, e, compare);
}
}