@tzm96dev/algo-toolkit
Version:
Algorithms Kit: A TypeScript-first library of classic and modern algorithms. Includes sorting, searching, and string-matching utilities for arrays, numbers, and objects. Lightweight, fast, and production-ready.
57 lines (36 loc) • 2.38 kB
TypeScript
type KeySelector<T> = keyof T | ((item: T) => unknown);
type Order = "asc" | "desc";
interface CommonOptions<T> {
key?: KeySelector<T>;
order?: Order;
}
declare function getValue<T>(item: T, key?: KeySelector<T>): unknown;
declare function defaultPrimitiveComparator(a: unknown, b: unknown): number;
declare function buildComparator<T>(opts?: CommonOptions<T>): (a: T, b: T) => number;
declare function bubbleSort<T>(arr: T[], opts?: CommonOptions<T>): T[];
declare function insertionSort<T>(arr: T[], opts?: CommonOptions<T>): T[];
declare function selectionSort<T>(arr: T[], opts?: CommonOptions<T>): T[];
declare function mergeSort<T>(arr: T[], opts?: CommonOptions<T>): T[];
declare function quickSort<T>(arr: T[], opts?: CommonOptions<T>): T[];
declare function heapSort<T>(arr: T[], opts?: CommonOptions<T>): T[];
declare function countingSort(arr: number[], opts?: {
min?: number;
max?: number;
}): number[];
declare function radixSort(arr: number[]): number[];
declare function bucketSort(arr: number[], opts?: {
bucketCount?: number;
min?: number;
max?: number;
}): number[];
declare function linearSearch<T>(arr: T[], target: unknown, opts?: CommonOptions<T>): number;
declare function binarySearch<T>(arr: T[], target: unknown, opts?: CommonOptions<T>): number;
declare function jumpSearch<T>(arr: T[], target: unknown, opts?: CommonOptions<T>): number;
declare function interpolationSearch(arr: number[], target: number): number;
declare function exponentialSearch<T>(arr: T[], target: unknown, opts?: CommonOptions<T>): number;
declare function ternarySearch<T>(arr: T[], target: unknown, opts?: CommonOptions<T>): number;
declare function fibonacciSearch(arr: number[], target: number): number;
declare function hashSearch<T>(arr: T[], target: unknown, opts?: CommonOptions<T>): number;
declare function kmpSearch(text: string, pattern: string): number;
declare function rabinKarpSearch(text: string, pattern: string, prime?: number): number;
export { type CommonOptions, type KeySelector, type Order, binarySearch, bubbleSort, bucketSort, buildComparator, countingSort, defaultPrimitiveComparator, exponentialSearch, fibonacciSearch, getValue, hashSearch, heapSort, insertionSort, interpolationSearch, jumpSearch, kmpSearch, linearSearch, mergeSort, quickSort, rabinKarpSearch, radixSort, selectionSort, ternarySearch };