timsort2
Version:
TimSort sorting revived in TypeScript
38 lines (36 loc) • 2.54 kB
TypeScript
import { AnyArray } from 'typestar'
declare module 'timsort2' {
/**
* Type representing a comparator function used for sorting an array.
*/
export type Comparator<T> = (a: T, b: T) => number
/**
* Default alphabetical comparison of items.
*
* @param a - First element to compare.
* @param b - Second element to compare.
* @return - A positive number if a.toString() > b.toString(), a
* negative number if .toString() < b.toString(), 0 otherwise.
*/
export function alphabeticalCompare(a: any, b: any): number
/**
* Sort an array in the range [lo, hi) using TimSort.
*
* @param array - The array to sort.
* @param compare - Item comparison function. Default is `alphabeticalCompare`
* @param lo - First element in the range (inclusive).
* @param hi - Last element in the range.
*/
export function sort<T>(array: T[], compare?: Comparator<T>, lo?: number, hi?: number): T[]
export function sort<T extends ArrayBufferLike>(array: Int8Array<T>, compare?: Comparator<T>, lo?: number, hi?: number): Int8Array<T>
export function sort<T extends ArrayBufferLike>(array: Int32Array<T>, compare?: Comparator<T>, lo?: number, hi?: number): Int32Array
export function sort<T extends ArrayBufferLike>(array: Uint8Array<T>, compare?: Comparator<T>, lo?: number, hi?: number): Uint8Array<T>
export function sort<T extends ArrayBufferLike>(array: Uint16Array<T>, compare?: Comparator<T>, lo?: number, hi?: number): Uint16Array<T>
export function sort<T extends ArrayBufferLike>(array: Uint32Array<T>, compare?: Comparator<T>, lo?: number, hi?: number): Uint32Array<T>
export function sort<T extends ArrayBufferLike>(array: Float32Array<T>, compare?: Comparator<T>, lo?: number, hi?: number): Float32Array<T>
export function sort<T extends ArrayBufferLike>(array: Float64Array<T>, compare?: Comparator<T>, lo?: number, hi?: number): Float64Array<T>
export function sort<T extends ArrayBufferLike>(array: Uint8ClampedArray<T>, compare?: Comparator<T>, lo?: number, hi?: number): Uint8ClampedArray<T>
export function sort<T extends ArrayBufferLike>(array: Uint8ClampedArray<T>, compare?: Comparator<T>, lo?: number, hi?: number): Uint8ClampedArray<T>
export function sort<T extends ArrayBufferLike>(array: BigInt64Array<T>, compare?: Comparator<T>, lo?: number, hi?: number): BigInt64Array<T>
export function sort<T extends ArrayBufferLike>(array: BigUint64Array<T>, compare?: Comparator<T>, lo?: number, hi?: number): BigUint64Array<T>
}