@@ -806,7 +806,7 @@ export function sortAndDeduplicate(array: readonly string[]): SortedReadonlyArra
806
806
export function sortAndDeduplicate < T > ( array : readonly T [ ] , comparer : Comparer < T > , equalityComparer ?: EqualityComparer < T > ) : SortedReadonlyArray < T > ;
807
807
/** @internal */
808
808
export function sortAndDeduplicate < T > ( array : readonly T [ ] , comparer ?: Comparer < T > , equalityComparer ?: EqualityComparer < T > ) : SortedReadonlyArray < T > {
809
- return deduplicateSorted ( sort ( array , comparer ) , equalityComparer ?? comparer ?? compareStringsCaseSensitive as any as Comparer < T > ) ;
809
+ return deduplicateSorted ( toSorted ( array , comparer ) , equalityComparer ?? comparer ?? compareStringsCaseSensitive as any as Comparer < T > ) ;
810
810
}
811
811
812
812
/** @internal */
@@ -1035,12 +1035,12 @@ function stableSortIndices<T>(array: readonly T[], indices: number[], comparer:
1035
1035
}
1036
1036
1037
1037
/**
1038
- * Returns a new sorted array.
1038
+ * Returns a new sorted array. This sort is stable, meaning elements equal to each other maintain their relative position in the array.
1039
1039
*
1040
1040
* @internal
1041
1041
*/
1042
- export function sort < T > ( array : readonly T [ ] , comparer ?: Comparer < T > ) : SortedReadonlyArray < T > {
1043
- return ( array . length === 0 ? array : array . slice ( ) . sort ( comparer ) ) as SortedReadonlyArray < T > ;
1042
+ export function toSorted < T > ( array : readonly T [ ] , comparer ?: Comparer < T > ) : SortedReadonlyArray < T > {
1043
+ return ( array . length === 0 ? emptyArray : array . slice ( ) . sort ( comparer ) ) as readonly T [ ] as SortedReadonlyArray < T > ;
1044
1044
}
1045
1045
1046
1046
/** @internal */
@@ -1050,17 +1050,6 @@ export function* arrayReverseIterator<T>(array: readonly T[]) {
1050
1050
}
1051
1051
}
1052
1052
1053
- /**
1054
- * Stable sort of an array. Elements equal to each other maintain their relative position in the array.
1055
- *
1056
- * @internal
1057
- */
1058
- export function stableSort < T > ( array : readonly T [ ] , comparer : Comparer < T > ) : SortedReadonlyArray < T > {
1059
- const indices = indicesOf ( array ) ;
1060
- stableSortIndices ( array , indices , comparer ) ;
1061
- return indices . map ( i => array [ i ] ) as SortedArray < T > as SortedReadonlyArray < T > ;
1062
- }
1063
-
1064
1053
/** @internal */
1065
1054
export function rangeEquals < T > ( array1 : readonly T [ ] , array2 : readonly T [ ] , pos : number , end : number ) {
1066
1055
while ( pos < end ) {
0 commit comments