UNPKG

@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.

1 lines 33.4 kB
{"version":3,"sources":["../src/utils/comparator.ts","../src/sorting/bubbleSort.ts","../src/sorting/insertionSort.ts","../src/sorting/selectionSort.ts","../src/sorting/mergeSort.ts","../src/sorting/quickSort.ts","../src/sorting/heapSort.ts","../src/sorting/countingSort.ts","../src/sorting/radixSort.ts","../src/sorting/bucketSort.ts","../src/searching/linearSearch.ts","../src/searching/binarySearch.ts","../src/searching/jumpSearch.ts","../src/searching/interpolationSearch.ts","../src/searching/exponentialSearch.ts","../src/searching/ternarySearch.ts","../src/searching/fibonacciSearch.ts","../src/searching/hashSearch.ts","../src/searching/kmpSearch.ts","../src/searching/rabinKarpSearch.ts"],"names":["b","i"],"mappings":";;;AAIO,SAAS,QAAA,CAAY,MAAS,GAAA,EAA+B;AAClE,EAAA,IAAI,CAAC,KAAK,OAAO,IAAA;AACjB,EAAA,IAAI,OAAO,GAAA,KAAQ,UAAA,EAAY,OAAO,IAAI,IAAI,CAAA;AAC9C,EAAA,OAAQ,KAAa,GAAG,CAAA;AAC1B;AAEO,SAAS,0BAAA,CAA2B,GAAY,CAAA,EAAoB;AACzE,EAAA,IAAI,OAAO,CAAA,KAAM,QAAA,IAAY,OAAO,CAAA,KAAM,QAAA,SAAiB,CAAA,GAAI,CAAA;AAC/D,EAAA,IAAI,OAAO,MAAM,QAAA,IAAY,OAAO,MAAM,QAAA,EAAU,OAAO,CAAA,CAAE,aAAA,CAAc,CAAC,CAAA;AAE5E,EAAA,OAAO,OAAO,CAAC,CAAA,CAAE,aAAA,CAAc,MAAA,CAAO,CAAC,CAAC,CAAA;AAC1C;AAEO,SAAS,gBAAmB,IAAA,EAAiD;AAjBpF,EAAA,IAAA,EAAA;AAkBE,EAAA,MAAM,KAAA,GAAA,CAAQ,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,KAAA,KAAN,IAAA,GAAA,EAAA,GAAe,KAAA;AAC7B,EAAA,OAAO,CAAC,GAAM,CAAA,KAAS;AACrB,IAAA,MAAM,EAAA,GAAK,QAAA,CAAS,CAAA,EAAG,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,GAAG,CAAA;AAChC,IAAA,MAAM,EAAA,GAAK,QAAA,CAAS,CAAA,EAAG,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,GAAG,CAAA;AAChC,IAAA,MAAM,CAAA,GAAI,0BAAA,CAA2B,EAAA,EAAI,EAAE,CAAA;AAC3C,IAAA,OAAO,KAAA,KAAU,KAAA,GAAQ,CAAA,GAAI,CAAC,CAAA;AAAA,EAChC,CAAA;AACF;;;ACvBO,SAAS,UAAA,CAAc,KAAU,IAAA,EAA8B;AACpE,EAAA,MAAM,UAAA,GAAa,gBAAgB,IAAI,CAAA;AACvC,EAAA,MAAM,CAAA,GAAI,CAAC,GAAG,GAAG,CAAA;AACjB,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,CAAA,CAAE,MAAA,GAAS,GAAG,CAAA,EAAA,EAAK;AACrC,IAAA,IAAI,OAAA,GAAU,KAAA;AACd,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,EAAE,MAAA,GAAS,CAAA,GAAI,GAAG,CAAA,EAAA,EAAK;AACzC,MAAA,IAAI,UAAA,CAAW,EAAE,CAAC,CAAA,EAAG,EAAE,CAAA,GAAI,CAAC,CAAC,CAAA,GAAI,CAAA,EAAG;AAClC,QAAA,CAAC,CAAA,CAAE,CAAC,CAAA,EAAG,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA,GAAI,CAAC,EAAE,CAAA,GAAI,CAAC,CAAA,EAAG,CAAA,CAAE,CAAC,CAAC,CAAA;AAClC,QAAA,OAAA,GAAU,IAAA;AAAA,MACZ;AAAA,IACF;AACA,IAAA,IAAI,CAAC,OAAA,EAAS;AAAA,EAChB;AACA,EAAA,OAAO,CAAA;AACT;;;ACdO,SAAS,aAAA,CAAiB,KAAU,IAAA,EAA8B;AACvE,EAAA,MAAM,UAAA,GAAa,gBAAgB,IAAI,CAAA;AACvC,EAAA,MAAM,CAAA,GAAI,CAAC,GAAG,GAAG,CAAA;AACjB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,CAAE,QAAQ,CAAA,EAAA,EAAK;AACjC,IAAA,MAAM,GAAA,GAAM,EAAE,CAAC,CAAA;AACf,IAAA,IAAI,IAAI,CAAA,GAAI,CAAA;AACZ,IAAA,OAAO,CAAA,IAAK,KAAK,UAAA,CAAW,CAAA,CAAE,CAAC,CAAA,EAAG,GAAG,IAAI,CAAA,EAAG;AAC1C,MAAA,CAAA,CAAE,CAAA,GAAI,CAAC,CAAA,GAAI,CAAA,CAAE,CAAC,CAAA;AACd,MAAA,CAAA,EAAA;AAAA,IACF;AACA,IAAA,CAAA,CAAE,CAAA,GAAI,CAAC,CAAA,GAAI,GAAA;AAAA,EACb;AACA,EAAA,OAAO,CAAA;AACT;;;ACbO,SAAS,aAAA,CAAiB,KAAU,IAAA,EAA8B;AACvE,EAAA,MAAM,UAAA,GAAa,gBAAgB,IAAI,CAAA;AACvC,EAAA,MAAM,CAAA,GAAI,CAAC,GAAG,GAAG,CAAA;AACjB,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,CAAA,CAAE,MAAA,GAAS,GAAG,CAAA,EAAA,EAAK;AACrC,IAAA,IAAI,MAAA,GAAS,CAAA;AACb,IAAA,KAAA,IAAS,IAAI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,CAAE,QAAQ,CAAA,EAAA,EAAK;AACrC,MAAA,IAAI,UAAA,CAAW,EAAE,CAAC,CAAA,EAAG,EAAE,MAAM,CAAC,CAAA,GAAI,CAAA,EAAG,MAAA,GAAS,CAAA;AAAA,IAChD;AACA,IAAA,IAAI,WAAW,CAAA,EAAG,CAAC,CAAA,CAAE,CAAC,GAAG,CAAA,CAAE,MAAM,CAAC,CAAA,GAAI,CAAC,CAAA,CAAE,MAAM,CAAA,EAAG,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,EACxD;AACA,EAAA,OAAO,CAAA;AACT;;;ACXA,SAAS,KAAA,CAAS,IAAA,EAAW,KAAA,EAAY,GAAA,EAAkC;AACzE,EAAA,MAAM,SAAc,EAAC;AACrB,EAAA,IAAI,CAAA,GAAI,GAAG,CAAA,GAAI,CAAA;AACf,EAAA,OAAO,CAAA,GAAI,IAAA,CAAK,MAAA,IAAU,CAAA,GAAI,MAAM,MAAA,EAAQ;AAC1C,IAAA,IAAI,GAAA,CAAI,IAAA,CAAK,CAAC,CAAA,EAAG,KAAA,CAAM,CAAC,CAAC,CAAA,IAAK,CAAA,EAAG,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,SACjD,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AAAA,EAC7B;AACA,EAAA,OAAO,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA,CAAE,MAAA,CAAO,KAAA,CAAM,KAAA,CAAM,CAAC,CAAC,CAAA;AAC3D;AAEO,SAAS,SAAA,CAAa,KAAU,IAAA,EAA8B;AACnE,EAAA,IAAI,GAAA,CAAI,MAAA,IAAU,CAAA,EAAG,OAAO,GAAA;AAC5B,EAAA,MAAM,GAAA,GAAM,gBAAgB,IAAI,CAAA;AAChC,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,SAAS,CAAC,CAAA;AACrC,EAAA,MAAM,OAAO,SAAA,CAAU,GAAA,CAAI,MAAM,CAAA,EAAG,GAAG,GAAG,IAAI,CAAA;AAC9C,EAAA,MAAM,QAAQ,SAAA,CAAU,GAAA,CAAI,KAAA,CAAM,GAAG,GAAG,IAAI,CAAA;AAC5C,EAAA,OAAO,KAAA,CAAM,IAAA,EAAM,KAAA,EAAO,GAAG,CAAA;AAC/B;;;ACjBO,SAAS,SAAA,CAAa,KAAU,IAAA,EAA8B;AACnE,EAAA,IAAI,GAAA,CAAI,MAAA,IAAU,CAAA,EAAG,OAAO,GAAA;AAC5B,EAAA,MAAM,GAAA,GAAM,gBAAgB,IAAI,CAAA;AAChC,EAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,GAAA,CAAI,MAAA,GAAS,CAAC,CAAA;AAChC,EAAA,MAAM,OAAY,EAAC;AACnB,EAAA,MAAM,QAAa,EAAC;AACpB,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,MAAA,GAAS,GAAG,CAAA,EAAA,EAAK;AACvC,IAAA,IAAI,GAAA,CAAI,GAAA,CAAI,CAAC,CAAA,EAAG,KAAK,CAAA,IAAK,CAAA,EAAG,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,SACxC,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,EACxB;AACA,EAAA,OAAO,CAAC,GAAG,SAAA,CAAU,IAAA,EAAM,IAAI,CAAA,EAAG,KAAA,EAAO,GAAG,SAAA,CAAU,KAAA,EAAO,IAAI,CAAC,CAAA;AACpE;;;ACXA,SAAS,OAAA,CAAW,CAAA,EAAQ,CAAA,EAAW,CAAA,EAAW,GAAA,EAA6B;AAC7E,EAAA,IAAI,OAAA,GAAU,CAAA;AACd,EAAA,MAAM,IAAI,CAAA,GAAI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAI,CAAA,GAAI,CAAA;AACjC,EAAA,IAAI,CAAA,GAAI,CAAA,IAAK,GAAA,CAAI,CAAA,CAAE,CAAC,CAAA,EAAG,CAAA,CAAE,OAAO,CAAC,CAAA,GAAI,CAAA,EAAG,OAAA,GAAU,CAAA;AAClD,EAAA,IAAI,CAAA,GAAI,CAAA,IAAK,GAAA,CAAI,CAAA,CAAE,CAAC,CAAA,EAAG,CAAA,CAAE,OAAO,CAAC,CAAA,GAAI,CAAA,EAAG,OAAA,GAAU,CAAA;AAClD,EAAA,IAAI,YAAY,CAAA,EAAG;AACjB,IAAA,CAAC,CAAA,CAAE,CAAC,CAAA,EAAG,CAAA,CAAE,OAAO,CAAC,CAAA,GAAI,CAAC,CAAA,CAAE,OAAO,CAAA,EAAG,CAAA,CAAE,CAAC,CAAC,CAAA;AACtC,IAAA,OAAA,CAAQ,CAAA,EAAG,CAAA,EAAG,OAAA,EAAS,GAAG,CAAA;AAAA,EAC5B;AACF;AAEO,SAAS,QAAA,CAAY,KAAU,IAAA,EAA8B;AAClE,EAAA,MAAM,CAAA,GAAI,CAAC,GAAG,GAAG,CAAA;AACjB,EAAA,MAAM,GAAA,GAAM,gBAAgB,IAAI,CAAA;AAChC,EAAA,MAAM,IAAI,CAAA,CAAE,MAAA;AACZ,EAAA,KAAA,IAAS,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,CAAA,GAAI,CAAC,CAAA,GAAI,CAAA,EAAG,CAAA,IAAK,CAAA,EAAG,CAAA,EAAA,EAAK,OAAA,CAAQ,CAAA,EAAG,CAAA,EAAG,GAAG,GAAG,CAAA;AACrE,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAG,CAAA,EAAA,EAAK;AAC9B,IAAA,CAAC,CAAA,CAAE,CAAC,CAAA,EAAG,CAAA,CAAE,CAAC,CAAC,CAAA,GAAI,CAAC,CAAA,CAAE,CAAC,CAAA,EAAG,CAAA,CAAE,CAAC,CAAC,CAAA;AAC1B,IAAA,OAAA,CAAQ,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA;AAAA,EACtB;AAEA,EAAA,IAAA,CAAI,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,KAAA,MAAU,MAAA,EAAQ,OAAO,EAAE,OAAA,EAAQ;AAC7C,EAAA,OAAO,CAAA;AACT;;;ACxBO,SAAS,YAAA,CAAa,KAAe,IAAA,EAAiD;AAD7F,EAAA,IAAA,EAAA,EAAA,EAAA;AAEE,EAAA,IAAI,GAAA,CAAI,MAAA,KAAW,CAAA,EAAG,OAAO,EAAC;AAC9B,EAAA,MAAM,OAAM,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,GAAA,KAAN,YAAa,IAAA,CAAK,GAAA,CAAI,GAAG,GAAG,CAAA;AACxC,EAAA,MAAM,OAAM,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,GAAA,KAAN,YAAa,IAAA,CAAK,GAAA,CAAI,GAAG,GAAG,CAAA;AACxC,EAAA,MAAM,KAAA,GAAQ,MAAM,GAAA,GAAM,CAAA;AAC1B,EAAA,MAAM,QAAQ,IAAI,KAAA,CAAM,KAAK,CAAA,CAAE,KAAK,CAAC,CAAA;AACrC,EAAA,MAAM,MAAA,GAAS,IAAI,KAAA,CAAM,GAAA,CAAI,MAAM,CAAA;AAEnC,EAAA,KAAA,MAAW,GAAA,IAAO,GAAA,EAAK,KAAA,CAAM,GAAA,GAAM,GAAG,CAAA,EAAA;AACtC,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,MAAA,EAAQ,CAAA,EAAA,EAAK,KAAA,CAAM,CAAC,CAAA,IAAK,KAAA,CAAM,CAAA,GAAI,CAAC,CAAA;AAC9D,EAAA,KAAA,IAAS,IAAI,GAAA,CAAI,MAAA,GAAS,CAAA,EAAG,CAAA,IAAK,GAAG,CAAA,EAAA,EAAK;AACxC,IAAA,MAAM,GAAA,GAAM,IAAI,CAAC,CAAA;AACjB,IAAA,MAAM,MAAM,GAAA,GAAM,GAAA;AAClB,IAAA,MAAA,CAAQ,KAAA,CAAM,GAAG,CAAA,GAAe,CAAC,CAAA,GAAI,GAAA;AACrC,IAAA,KAAA,CAAM,GAAG,CAAA,EAAA;AAAA,EACX;AACA,EAAA,OAAO,MAAA;AACT;;;ACjBA,SAAS,qBAAqB,GAAA,EAAyB;AACrD,EAAA,IAAI,GAAA,CAAI,MAAA,KAAW,CAAA,EAAG,OAAO,EAAC;AAC9B,EAAA,IAAI,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,GAAG,GAAG,CAAA;AACzB,EAAA,IAAI,GAAA,GAAM,CAAA;AACV,EAAA,IAAI,MAAA,GAAS,CAAC,GAAG,GAAG,CAAA;AAEpB,EAAA,OAAO,IAAA,CAAK,KAAA,CAAM,GAAA,GAAM,GAAG,IAAI,CAAA,EAAG;AAChC,IAAA,MAAM,QAAQ,IAAI,KAAA,CAAM,EAAE,CAAA,CAAE,KAAK,CAAC,CAAA;AAClC,IAAA,MAAM,MAAM,IAAI,KAAA,CAAM,OAAO,MAAM,CAAA,CAAE,KAAK,CAAC,CAAA;AAC3C,IAAA,KAAA,MAAW,GAAA,IAAO,QAAQ,KAAA,CAAM,IAAA,CAAK,MAAM,GAAA,GAAM,GAAG,IAAI,EAAE,CAAA,EAAA;AAC1D,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,EAAA,EAAI,CAAA,EAAA,QAAW,CAAC,CAAA,IAAK,KAAA,CAAM,CAAA,GAAI,CAAC,CAAA;AACpD,IAAA,KAAA,IAAS,IAAI,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG,CAAA,IAAK,GAAG,CAAA,EAAA,EAAK;AAC3C,MAAA,MAAM,GAAA,GAAM,OAAO,CAAC,CAAA;AACpB,MAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,GAAA,GAAM,GAAG,CAAA,GAAI,EAAA;AACpC,MAAA,GAAA,CAAI,KAAA,CAAM,GAAG,CAAA,GAAI,CAAC,CAAA,GAAI,GAAA;AACtB,MAAA,KAAA,CAAM,GAAG,CAAA,EAAA;AAAA,IACX;AACA,IAAA,MAAA,GAAS,GAAA;AACT,IAAA,GAAA,IAAO,EAAA;AAAA,EACT;AACA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,UAAU,GAAA,EAAyB;AACjD,EAAA,MAAM,SAAA,GAAY,GAAA,CAAI,MAAA,CAAO,CAAA,CAAA,KAAK,CAAA,GAAI,CAAC,CAAA,CAAE,GAAA,CAAI,CAAA,CAAA,KAAK,IAAA,CAAK,GAAA,CAAI,CAAC,CAAC,CAAA;AAC7D,EAAA,MAAM,YAAA,GAAe,GAAA,CAAI,MAAA,CAAO,CAAA,CAAA,KAAK,KAAK,CAAC,CAAA;AAC3C,EAAA,MAAM,SAAA,GAAY,qBAAqB,SAAS,CAAA,CAAE,SAAQ,CAAE,GAAA,CAAI,CAAA,CAAA,KAAK,CAAC,CAAC,CAAA;AACvE,EAAA,MAAM,SAAA,GAAY,qBAAqB,YAAY,CAAA;AACnD,EAAA,OAAO,CAAC,GAAG,SAAA,EAAW,GAAG,SAAS,CAAA;AACpC;;;AC7BO,SAAS,UAAA,CAAW,KAAe,IAAA,EAAuE;AADjH,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAEE,EAAA,MAAM,IAAI,GAAA,CAAI,MAAA;AACd,EAAA,IAAI,CAAA,IAAK,CAAA,EAAG,OAAO,CAAC,GAAG,GAAG,CAAA;AAC1B,EAAA,MAAM,OAAM,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,GAAA,KAAN,YAAa,IAAA,CAAK,GAAA,CAAI,GAAG,GAAG,CAAA;AACxC,EAAA,MAAM,OAAM,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,GAAA,KAAN,YAAa,IAAA,CAAK,GAAA,CAAI,GAAG,GAAG,CAAA;AACxC,EAAA,MAAM,WAAA,GAAc,IAAA,CAAK,GAAA,CAAI,CAAA,EAAA,CAAG,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,WAAA,KAAN,IAAA,GAAA,EAAA,GAAqB,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,CAAC,CAAC,CAAC,CAAA;AAC5E,EAAA,MAAM,OAAA,GAAsB,MAAM,IAAA,CAAK,EAAE,QAAQ,WAAA,EAAY,EAAG,MAAM,EAAE,CAAA;AACxE,EAAA,MAAM,KAAA,GAAQ,MAAM,GAAA,IAAO,CAAA;AAE3B,EAAA,KAAA,MAAW,OAAO,GAAA,EAAK;AACrB,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,WAAA,GAAc,CAAA,EAAG,IAAA,CAAK,KAAA,CAAA,CAAQ,GAAA,GAAM,GAAA,IAAO,KAAA,GAAS,WAAW,CAAC,CAAA;AACrF,IAAA,OAAA,CAAQ,GAAG,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAAA,EACvB;AACA,EAAA,KAAA,MAAW,CAAA,IAAK,SAAS,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAGA,EAAAA,KAAM,IAAIA,EAAC,CAAA;AAC/C,EAAA,OAAQ,EAAC,CAAe,MAAA,CAAO,GAAG,OAAO,CAAA;AAC3C;;;ACdO,SAAS,YAAA,CAAgB,GAAA,EAAU,MAAA,EAAiB,IAAA,EAAiC;AAC1F,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,QAAQ,CAAA,EAAA,EAAK;AACnC,IAAA,MAAM,MAAM,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,EAAG,6BAAM,GAAG,CAAA;AACtC,IAAA,IAAI,GAAA,KAAQ,QAAQ,OAAO,CAAA;AAAA,EAC7B;AACA,EAAA,OAAO,EAAA;AACT;;;ACNO,SAAS,YAAA,CAAgB,GAAA,EAAU,MAAA,EAAiB,IAAA,EAAiC;AAF5F,EAAA,IAAA,EAAA;AAGE,EAAA,MAAM,KAAA,GAAA,CAAQ,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,KAAA,KAAN,IAAA,GAAA,EAAA,GAAe,KAAA;AAC7B,EAAA,IAAI,GAAA,GAAM,CAAA,EAAG,IAAA,GAAO,GAAA,CAAI,MAAA,GAAS,CAAA;AACjC,EAAA,OAAO,OAAO,IAAA,EAAM;AAClB,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAA,CAAO,GAAA,GAAM,QAAQ,CAAC,CAAA;AACvC,IAAA,MAAM,SAAS,QAAA,CAAS,GAAA,CAAI,GAAG,CAAA,EAAG,6BAAM,GAAG,CAAA;AAC3C,IAAA,MAAM,GAAA,GAAM,0BAAA,CAA2B,MAAA,EAAQ,MAAM,CAAA;AACrD,IAAA,IAAI,GAAA,KAAQ,GAAG,OAAO,GAAA;AACtB,IAAA,IAAI,UAAU,KAAA,EAAO;AACnB,MAAA,IAAI,GAAA,GAAM,CAAA,EAAG,GAAA,GAAM,GAAA,GAAM,CAAA;AAAA,kBAAe,GAAA,GAAM,CAAA;AAAA,IAChD,CAAA,MAAO;AACL,MAAA,IAAI,GAAA,GAAM,CAAA,EAAG,GAAA,GAAM,GAAA,GAAM,CAAA;AAAA,kBAAe,GAAA,GAAM,CAAA;AAAA,IAChD;AAAA,EACF;AACA,EAAA,OAAO,EAAA;AACT;;;ACfO,SAAS,UAAA,CAAc,GAAA,EAAU,MAAA,EAAiB,IAAA,EAAiC;AAF1F,EAAA,IAAA,EAAA;AAGE,EAAA,MAAM,IAAI,GAAA,CAAI,MAAA;AACd,EAAA,IAAI,CAAA,KAAM,GAAG,OAAO,EAAA;AACpB,EAAA,MAAM,KAAA,GAAA,CAAQ,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,KAAA,KAAN,IAAA,GAAA,EAAA,GAAe,KAAA;AAC7B,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,MAAM,IAAA,CAAK,IAAA,CAAK,CAAC,CAAC,CAAC,CAAA;AACjD,EAAA,IAAI,IAAA,GAAO,CAAA;AACX,EAAA,IAAI,OAAA,GAAU,IAAA;AAEd,EAAA,MAAM,MAAA,GAAS,CAAC,CAAA,EAAY,CAAA,KAAgB,KAAA,KAAU,KAAA,GAAQ,0BAAA,CAA2B,CAAA,EAAG,CAAC,CAAA,GAAI,0BAAA,CAA2B,CAAA,EAAG,CAAC,CAAA;AAEhI,EAAA,OAAO,OAAO,CAAA,IAAK,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,KAAK,GAAA,CAAI,OAAA,EAAS,CAAC,CAAA,GAAI,CAAC,CAAA,EAAG,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,GAAG,CAAA,EAAG,MAAM,IAAI,CAAA,EAAG;AACzF,IAAA,IAAA,GAAO,OAAA;AACP,IAAA,OAAA,IAAW,IAAA;AACX,IAAA,IAAI,IAAA,IAAQ,GAAG,OAAO,EAAA;AAAA,EACxB;AACA,EAAA,OAAO,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,OAAA,EAAS,CAAC,CAAA,EAAG;AAClC,IAAA,IAAI,0BAAA,CAA2B,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA,EAAG,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,GAAG,CAAA,EAAG,MAAM,CAAA,KAAM,CAAA,EAAG,OAAO,IAAA;AACrF,IAAA,IAAA,EAAA;AAAA,EACF;AACA,EAAA,OAAO,EAAA;AACT;;;ACrBO,SAAS,mBAAA,CAAoB,KAAe,MAAA,EAAwB;AACzE,EAAA,IAAI,GAAA,GAAM,CAAA,EAAG,IAAA,GAAO,GAAA,CAAI,MAAA,GAAS,CAAA;AACjC,EAAA,OAAO,GAAA,IAAO,QAAQ,MAAA,IAAU,GAAA,CAAI,GAAG,CAAA,IAAK,MAAA,IAAU,GAAA,CAAI,IAAI,CAAA,EAAG;AAC/D,IAAA,IAAI,QAAQ,IAAA,EAAM,OAAO,IAAI,GAAG,CAAA,KAAM,SAAS,GAAA,GAAM,EAAA;AACrD,IAAA,MAAM,GAAA,GAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAA,CAAQ,SAAS,GAAA,CAAI,GAAG,CAAA,KAAM,IAAA,GAAO,QAAS,GAAA,CAAI,IAAI,CAAA,GAAI,GAAA,CAAI,GAAG,CAAA,CAAE,CAAA;AAC1F,IAAA,IAAI,GAAA,CAAI,GAAG,CAAA,KAAM,MAAA,EAAQ,OAAO,GAAA;AAChC,IAAA,IAAI,GAAA,CAAI,GAAG,CAAA,GAAI,MAAA,QAAc,GAAA,GAAM,CAAA;AAAA,gBAAe,GAAA,GAAM,CAAA;AAAA,EAC1D;AACA,EAAA,OAAO,EAAA;AACT;;;ACRO,SAAS,iBAAA,CAAqB,GAAA,EAAU,MAAA,EAAiB,IAAA,EAAiC;AAFjG,EAAA,IAAA,EAAA;AAGE,EAAA,MAAM,IAAI,GAAA,CAAI,MAAA;AACd,EAAA,IAAI,CAAA,KAAM,GAAG,OAAO,EAAA;AACpB,EAAA,MAAM,KAAA,GAAA,CAAQ,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,KAAA,KAAN,IAAA,GAAA,EAAA,GAAe,KAAA;AAC7B,EAAA,MAAM,MAAA,GAAS,CAAC,CAAA,EAAY,CAAA,KAAgB,KAAA,KAAU,KAAA,GAAQ,0BAAA,CAA2B,CAAA,EAAG,CAAC,CAAA,GAAI,0BAAA,CAA2B,CAAA,EAAG,CAAC,CAAA;AAEhI,EAAA,IAAI,0BAAA,CAA2B,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,EAAG,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,GAAG,CAAA,EAAG,MAAM,CAAA,KAAM,CAAA,EAAG,OAAO,CAAA;AAClF,EAAA,IAAI,CAAA,GAAI,CAAA;AACR,EAAA,OAAO,CAAA,GAAI,CAAA,IAAK,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,EAAG,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,GAAG,CAAA,EAAG,MAAM,CAAA,IAAK,GAAG,CAAA,IAAK,CAAA;AAGvE,EAAA,IAAI,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,CAAA,GAAI,CAAC,CAAA,EAAG,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,CAAA,GAAI,CAAC,CAAA;AACrD,EAAA,OAAO,OAAO,IAAA,EAAM;AAClB,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAA,CAAO,GAAA,GAAM,QAAQ,CAAC,CAAA;AACvC,IAAA,MAAM,SAAS,QAAA,CAAS,GAAA,CAAI,GAAG,CAAA,EAAG,6BAAM,GAAG,CAAA;AAC3C,IAAA,MAAM,GAAA,GAAM,0BAAA,CAA2B,MAAA,EAAQ,MAAM,CAAA;AACrD,IAAA,IAAI,GAAA,KAAQ,GAAG,OAAO,GAAA;AACtB,IAAA,IAAI,UAAU,KAAA,EAAO;AACnB,MAAA,IAAI,GAAA,GAAM,CAAA,EAAG,GAAA,GAAM,GAAA,GAAM,CAAA;AAAA,kBAAe,GAAA,GAAM,CAAA;AAAA,IAChD,CAAA,MAAO;AACL,MAAA,IAAI,GAAA,GAAM,CAAA,EAAG,GAAA,GAAM,GAAA,GAAM,CAAA;AAAA,kBAAe,GAAA,GAAM,CAAA;AAAA,IAChD;AAAA,EACF;AACA,EAAA,OAAO,EAAA;AACT;;;ACxBO,SAAS,aAAA,CAAiB,GAAA,EAAU,MAAA,EAAiB,IAAA,EAAiC;AAF7F,EAAA,IAAA,EAAA;AAGE,EAAA,IAAI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,MAAA,GAAS,CAAA;AAC5B,EAAA,MAAM,KAAA,GAAA,CAAQ,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,KAAA,KAAN,IAAA,GAAA,EAAA,GAAe,KAAA;AAC7B,EAAA,MAAM,MAAA,GAAS,CAAC,CAAA,EAAY,CAAA,KAAgB,KAAA,KAAU,KAAA,GAAQ,0BAAA,CAA2B,CAAA,EAAG,CAAC,CAAA,GAAI,0BAAA,CAA2B,CAAA,EAAG,CAAC,CAAA;AAEhI,EAAA,OAAO,KAAK,CAAA,EAAG;AACb,IAAA,MAAM,OAAO,CAAA,GAAI,IAAA,CAAK,KAAA,CAAA,CAAO,CAAA,GAAI,KAAK,CAAC,CAAA;AACvC,IAAA,MAAM,OAAO,CAAA,GAAI,IAAA,CAAK,KAAA,CAAA,CAAO,CAAA,GAAI,KAAK,CAAC,CAAA;AACvC,IAAA,MAAM,KAAK,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA,EAAG,6BAAM,GAAG,CAAA;AACxC,IAAA,MAAM,KAAK,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA,EAAG,6BAAM,GAAG,CAAA;AAExC,IAAA,IAAI,0BAAA,CAA2B,EAAA,EAAI,MAAM,CAAA,KAAM,GAAG,OAAO,IAAA;AACzD,IAAA,IAAI,0BAAA,CAA2B,EAAA,EAAI,MAAM,CAAA,KAAM,GAAG,OAAO,IAAA;AAEzD,IAAA,IAAI,OAAO,MAAA,EAAQ,EAAE,CAAA,GAAI,CAAA,MAAO,IAAA,GAAO,CAAA;AAAA,SAAA,IAC9B,OAAO,MAAA,EAAQ,EAAE,CAAA,GAAI,CAAA,MAAO,IAAA,GAAO,CAAA;AAAA,SACvC;AAAE,MAAA,CAAA,GAAI,IAAA,GAAO,CAAA;AAAG,MAAA,CAAA,GAAI,IAAA,GAAO,CAAA;AAAA,IAAG;AAAA,EACrC;AACA,EAAA,OAAO,EAAA;AACT;;;ACpBO,SAAS,eAAA,CAAgB,KAAe,MAAA,EAAwB;AACrE,EAAA,MAAM,IAAI,GAAA,CAAI,MAAA;AACd,EAAA,IAAI,OAAA,GAAU,CAAA,EAAG,OAAA,GAAU,CAAA,EAAG,OAAO,OAAA,GAAU,OAAA;AAC/C,EAAA,OAAO,OAAO,CAAA,EAAG;AAAE,IAAA,OAAA,GAAU,OAAA;AAAS,IAAA,OAAA,GAAU,IAAA;AAAM,IAAA,IAAA,GAAO,OAAA,GAAU,OAAA;AAAA,EAAS;AAChF,EAAA,IAAI,MAAA,GAAS,EAAA;AACb,EAAA,OAAO,OAAO,CAAA,EAAG;AACf,IAAA,MAAM,IAAI,IAAA,CAAK,GAAA,CAAI,MAAA,GAAS,OAAA,EAAS,IAAI,CAAC,CAAA;AAC1C,IAAA,IAAI,GAAA,CAAI,CAAC,CAAA,GAAI,MAAA,EAAQ;AAAE,MAAA,IAAA,GAAO,OAAA;AAAS,MAAA,OAAA,GAAU,OAAA;AAAS,MAAA,OAAA,GAAU,IAAA,GAAO,OAAA;AAAS,MAAA,MAAA,GAAS,CAAA;AAAA,IAAG,CAAA,MAAA,IACvF,GAAA,CAAI,CAAC,CAAA,GAAI,MAAA,EAAQ;AAAE,MAAA,IAAA,GAAO,OAAA;AAAS,MAAA,OAAA,GAAU,OAAA,GAAU,OAAA;AAAS,MAAA,OAAA,GAAU,IAAA,GAAO,OAAA;AAAA,IAAS,OAC9F,OAAO,CAAA;AAAA,EACd;AACA,EAAA,IAAI,WAAW,GAAA,CAAI,MAAA,GAAS,CAAC,CAAA,KAAM,MAAA,SAAe,MAAA,GAAS,CAAA;AAC3D,EAAA,OAAO,EAAA;AACT;;;ACZO,SAAS,UAAA,CAAc,GAAA,EAAU,MAAA,EAAiB,IAAA,EAAiC;AACxF,EAAA,MAAM,GAAA,uBAAU,GAAA,EAAqB;AACrC,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,QAAQ,CAAA,EAAA,EAAK;AACnC,IAAA,MAAM,IAAI,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,EAAG,6BAAM,GAAG,CAAA;AACpC,IAAA,IAAI,CAAC,IAAI,GAAA,CAAI,CAAC,GAAG,GAAA,CAAI,GAAA,CAAI,GAAG,CAAC,CAAA;AAAA,EAC/B;AACA,EAAA,OAAO,IAAI,GAAA,CAAI,MAAM,IAAK,GAAA,CAAI,GAAA,CAAI,MAAM,CAAA,GAAe,EAAA;AACzD;;;ACTO,SAAS,SAAA,CAAU,MAAc,OAAA,EAAyB;AAC/D,EAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG,OAAO,CAAA;AACjC,EAAA,MAAM,MAAM,IAAI,KAAA,CAAM,QAAQ,MAAM,CAAA,CAAE,KAAK,CAAC,CAAA;AAC5C,EAAA,IAAI,GAAA,GAAM,CAAA;AACV,EAAA,KAAA,IAASC,EAAAA,GAAI,CAAA,EAAGA,EAAAA,GAAI,OAAA,CAAQ,MAAA,IAAS;AACnC,IAAA,IAAI,OAAA,CAAQA,EAAC,CAAA,KAAM,OAAA,CAAQ,GAAG,CAAA,EAAG,GAAA,CAAIA,EAAAA,EAAG,CAAA,GAAI,EAAE,GAAA;AAAA,SAAA,IACrC,GAAA,EAAK,GAAA,GAAM,GAAA,CAAI,GAAA,GAAM,CAAC,CAAA;AAAA,SAC1B,GAAA,CAAIA,IAAG,CAAA,GAAI,CAAA;AAAA,EAClB;AACA,EAAA,IAAI,CAAA,GAAI,GAAG,CAAA,GAAI,CAAA;AACf,EAAA,OAAO,CAAA,GAAI,KAAK,MAAA,EAAQ;AACtB,IAAA,IAAI,IAAA,CAAK,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,CAAA,EAAG;AAAE,MAAA,CAAA,EAAA;AAAK,MAAA,CAAA,EAAA;AAAK,MAAA,IAAI,CAAA,KAAM,OAAA,CAAQ,MAAA,EAAQ,OAAO,CAAA,GAAI,CAAA;AAAA,IAAG,CAAA,MAAA,IACvE,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,IAAI,CAAC,CAAA;AAAA,SACpB,CAAA,EAAA;AAAA,EACP;AACA,EAAA,OAAO,EAAA;AACT;;;AChBO,SAAS,eAAA,CAAgB,IAAA,EAAc,OAAA,EAAiB,KAAA,GAAgB,GAAA,EAAa;AAC1F,EAAA,MAAM,CAAA,GAAI,OAAA,CAAQ,MAAA,EAAQ,CAAA,GAAI,IAAA,CAAK,MAAA;AACnC,EAAA,IAAI,CAAA,KAAM,GAAG,OAAO,CAAA;AACpB,EAAA,IAAI,CAAA,GAAI,GAAG,OAAO,EAAA;AAClB,EAAA,MAAM,CAAA,GAAI,GAAA;AACV,EAAA,IAAI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA;AACtB,EAAA,KAAA,IAAS,CAAA,GAAI,GAAG,CAAA,GAAI,CAAA,GAAI,GAAG,CAAA,EAAA,EAAK,CAAA,GAAK,IAAI,CAAA,GAAK,KAAA;AAC9C,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,EAAK;AAC1B,IAAA,CAAA,GAAA,CAAK,CAAA,GAAI,CAAA,GAAI,OAAA,CAAQ,UAAA,CAAW,CAAC,CAAA,IAAK,KAAA;AACtC,IAAA,CAAA,GAAA,CAAK,CAAA,GAAI,CAAA,GAAI,IAAA,CAAK,UAAA,CAAW,CAAC,CAAA,IAAK,KAAA;AAAA,EACrC;AACA,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,IAAK,CAAA,GAAI,GAAG,CAAA,EAAA,EAAK;AAC/B,IAAA,IAAI,MAAM,CAAA,EAAG;AACX,MAAA,IAAI,CAAA,GAAI,CAAA;AACR,MAAA,OAAO,CAAA,GAAI,KAAK,IAAA,CAAK,CAAA,GAAI,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,CAAA,EAAG,CAAA,EAAA;AAC5C,MAAA,IAAI,CAAA,KAAM,GAAG,OAAO,CAAA;AAAA,IACtB;AACA,IAAA,IAAI,CAAA,GAAI,IAAI,CAAA,EAAG;AACb,MAAA,CAAA,GAAA,CAAK,CAAA,IAAK,CAAA,GAAI,IAAA,CAAK,UAAA,CAAW,CAAC,CAAA,GAAI,CAAA,CAAA,GAAK,IAAA,CAAK,UAAA,CAAW,CAAA,GAAI,CAAC,CAAA,IAAK,KAAA;AAClE,MAAA,IAAI,CAAA,GAAI,GAAG,CAAA,IAAK,KAAA;AAAA,IAClB;AAAA,EACF;AACA,EAAA,OAAO,EAAA;AACT","file":"index.cjs","sourcesContent":["export type KeySelector<T> = keyof T | ((item: T) => unknown);\nexport type Order = \"asc\" | \"desc\";\nexport interface CommonOptions<T> { key?: KeySelector<T>; order?: Order; }\n\nexport function getValue<T>(item: T, key?: KeySelector<T>): unknown {\n if (!key) return item as unknown;\n if (typeof key === \"function\") return key(item);\n return (item as any)[key];\n}\n\nexport function defaultPrimitiveComparator(a: unknown, b: unknown): number {\n if (typeof a === \"number\" && typeof b === \"number\") return a - b;\n if (typeof a === \"string\" && typeof b === \"string\") return a.localeCompare(b);\n // Fallback: string compare\n return String(a).localeCompare(String(b));\n}\n\nexport function buildComparator<T>(opts?: CommonOptions<T>): (a: T, b: T) => number {\n const order = opts?.order ?? \"asc\";\n return (a: T, b: T) => {\n const va = getValue(a, opts?.key);\n const vb = getValue(b, opts?.key);\n const r = defaultPrimitiveComparator(va, vb);\n return order === \"asc\" ? r : -r;\n };\n}\n","import { CommonOptions, buildComparator } from \"../utils/comparator\";\n\nexport function bubbleSort<T>(arr: T[], opts?: CommonOptions<T>): T[] {\n const comparator = buildComparator(opts);\n const a = [...arr];\n for (let i = 0; i < a.length - 1; i++) {\n let swapped = false;\n for (let j = 0; j < a.length - i - 1; j++) {\n if (comparator(a[j], a[j + 1]) > 0) {\n [a[j], a[j + 1]] = [a[j + 1], a[j]];\n swapped = true;\n }\n }\n if (!swapped) break;\n }\n return a;\n}\n","import { CommonOptions, buildComparator } from \"../utils/comparator\";\n\nexport function insertionSort<T>(arr: T[], opts?: CommonOptions<T>): T[] {\n const comparator = buildComparator(opts);\n const a = [...arr];\n for (let i = 1; i < a.length; i++) {\n const key = a[i];\n let j = i - 1;\n while (j >= 0 && comparator(a[j], key) > 0) {\n a[j + 1] = a[j];\n j--;\n }\n a[j + 1] = key;\n }\n return a;\n}\n","import { CommonOptions, buildComparator } from \"../utils/comparator\";\n\nexport function selectionSort<T>(arr: T[], opts?: CommonOptions<T>): T[] {\n const comparator = buildComparator(opts);\n const a = [...arr];\n for (let i = 0; i < a.length - 1; i++) {\n let minIdx = i;\n for (let j = i + 1; j < a.length; j++) {\n if (comparator(a[j], a[minIdx]) < 0) minIdx = j;\n }\n if (minIdx !== i) [a[i], a[minIdx]] = [a[minIdx], a[i]];\n }\n return a;\n}\n","import { CommonOptions, buildComparator } from \"../utils/comparator\";\n\nfunction merge<T>(left: T[], right: T[], cmp: (a: T, b: T) => number): T[] {\n const result: T[] = [];\n let i = 0, j = 0;\n while (i < left.length && j < right.length) {\n if (cmp(left[i], right[j]) <= 0) result.push(left[i++]);\n else result.push(right[j++]);\n }\n return result.concat(left.slice(i)).concat(right.slice(j));\n}\n\nexport function mergeSort<T>(arr: T[], opts?: CommonOptions<T>): T[] {\n if (arr.length <= 1) return arr;\n const cmp = buildComparator(opts);\n const mid = Math.floor(arr.length / 2);\n const left = mergeSort(arr.slice(0, mid), opts);\n const right = mergeSort(arr.slice(mid), opts);\n return merge(left, right, cmp);\n}\n","import { CommonOptions, buildComparator } from \"../utils/comparator\";\n\nexport function quickSort<T>(arr: T[], opts?: CommonOptions<T>): T[] {\n if (arr.length <= 1) return arr;\n const cmp = buildComparator(opts);\n const pivot = arr[arr.length - 1];\n const left: T[] = [];\n const right: T[] = [];\n for (let i = 0; i < arr.length - 1; i++) {\n if (cmp(arr[i], pivot) <= 0) left.push(arr[i]);\n else right.push(arr[i]);\n }\n return [...quickSort(left, opts), pivot, ...quickSort(right, opts)];\n}\n","import { CommonOptions, buildComparator } from \"../utils/comparator\";\n\nfunction heapify<T>(a: T[], n: number, i: number, cmp: (x: T, y: T) => number) {\n let largest = i;\n const l = 2 * i + 1, r = 2 * i + 2;\n if (l < n && cmp(a[l], a[largest]) > 0) largest = l;\n if (r < n && cmp(a[r], a[largest]) > 0) largest = r;\n if (largest !== i) {\n [a[i], a[largest]] = [a[largest], a[i]];\n heapify(a, n, largest, cmp);\n }\n}\n\nexport function heapSort<T>(arr: T[], opts?: CommonOptions<T>): T[] {\n const a = [...arr];\n const cmp = buildComparator(opts);\n const n = a.length;\n for (let i = Math.floor(n / 2) - 1; i >= 0; i--) heapify(a, n, i, cmp);\n for (let i = n - 1; i > 0; i--) {\n [a[0], a[i]] = [a[i], a[0]];\n heapify(a, i, 0, cmp);\n }\n // If descending requested, reverse the result (since we built a max-heap for asc)\n if (opts?.order === \"desc\") return a.reverse();\n return a;\n}\n","// Counting sort for integers in a (possibly small) range. Supports negatives.\nexport function countingSort(arr: number[], opts?: { min?: number; max?: number }): number[] {\n if (arr.length === 0) return [];\n const min = opts?.min ?? Math.min(...arr);\n const max = opts?.max ?? Math.max(...arr);\n const range = max - min + 1;\n const count = new Array(range).fill(0);\n const output = new Array(arr.length);\n\n for (const num of arr) count[num - min]++;\n for (let i = 1; i < count.length; i++) count[i] += count[i - 1];\n for (let i = arr.length - 1; i >= 0; i--) {\n const num = arr[i];\n const idx = num - min;\n output[(count[idx] as number) - 1] = num;\n count[idx]--;\n }\n return output as number[];\n}\n","// Radix sort (LSD, base 10). Handles negative numbers by sorting abs and recombining.\nfunction radixSortNonNegative(arr: number[]): number[] {\n if (arr.length === 0) return [];\n let max = Math.max(...arr);\n let exp = 1;\n let output = [...arr];\n\n while (Math.floor(max / exp) > 0) {\n const count = new Array(10).fill(0);\n const out = new Array(output.length).fill(0);\n for (const num of output) count[Math.floor(num / exp) % 10]++;\n for (let i = 1; i < 10; i++) count[i] += count[i - 1];\n for (let i = output.length - 1; i >= 0; i--) {\n const num = output[i];\n const idx = Math.floor(num / exp) % 10;\n out[count[idx] - 1] = num;\n count[idx]--;\n }\n output = out;\n exp *= 10;\n }\n return output;\n}\n\nexport function radixSort(arr: number[]): number[] {\n const negatives = arr.filter(n => n < 0).map(n => Math.abs(n));\n const nonNegatives = arr.filter(n => n >= 0);\n const sortedNeg = radixSortNonNegative(negatives).reverse().map(n => -n);\n const sortedPos = radixSortNonNegative(nonNegatives);\n return [...sortedNeg, ...sortedPos];\n}\n","// Bucket sort for numbers within a range. Defaults to using sqrt(n) buckets.\nexport function bucketSort(arr: number[], opts?: { bucketCount?: number; min?: number; max?: number }): number[] {\n const n = arr.length;\n if (n <= 1) return [...arr];\n const min = opts?.min ?? Math.min(...arr);\n const max = opts?.max ?? Math.max(...arr);\n const bucketCount = Math.max(1, opts?.bucketCount ?? Math.ceil(Math.sqrt(n)));\n const buckets: number[][] = Array.from({ length: bucketCount }, () => []);\n const range = max - min || 1;\n\n for (const num of arr) {\n const idx = Math.min(bucketCount - 1, Math.floor(((num - min) / range) * bucketCount));\n buckets[idx].push(num);\n }\n for (const b of buckets) b.sort((a, b) => a - b);\n return ([] as number[]).concat(...buckets);\n}\n","import { CommonOptions, getValue } from \"../utils/comparator\";\n\nexport function linearSearch<T>(arr: T[], target: unknown, opts?: CommonOptions<T>): number {\n for (let i = 0; i < arr.length; i++) {\n const val = getValue(arr[i], opts?.key);\n if (val === target) return i;\n }\n return -1;\n}\n","import { CommonOptions, getValue, defaultPrimitiveComparator } from \"../utils/comparator\";\n\nexport function binarySearch<T>(arr: T[], target: unknown, opts?: CommonOptions<T>): number {\n const order = opts?.order ?? \"asc\";\n let low = 0, high = arr.length - 1;\n while (low <= high) {\n const mid = Math.floor((low + high) / 2);\n const midVal = getValue(arr[mid], opts?.key);\n const cmp = defaultPrimitiveComparator(midVal, target);\n if (cmp === 0) return mid;\n if (order === \"asc\") {\n if (cmp < 0) low = mid + 1; else high = mid - 1;\n } else {\n if (cmp > 0) low = mid + 1; else high = mid - 1;\n }\n }\n return -1;\n}\n","import { CommonOptions, getValue, defaultPrimitiveComparator } from \"../utils/comparator\";\n\nexport function jumpSearch<T>(arr: T[], target: unknown, opts?: CommonOptions<T>): number {\n const n = arr.length;\n if (n === 0) return -1;\n const order = opts?.order ?? \"asc\";\n const step = Math.max(1, Math.floor(Math.sqrt(n)));\n let prev = 0;\n let current = step;\n\n const cmpDir = (a: unknown, b: unknown) => (order === \"asc\" ? defaultPrimitiveComparator(a, b) : defaultPrimitiveComparator(b, a));\n\n while (prev < n && cmpDir(getValue(arr[Math.min(current, n) - 1], opts?.key), target) < 0) {\n prev = current;\n current += step;\n if (prev >= n) return -1;\n }\n while (prev < Math.min(current, n)) {\n if (defaultPrimitiveComparator(getValue(arr[prev], opts?.key), target) === 0) return prev;\n prev++;\n }\n return -1;\n}\n","// Interpolation search for sorted, uniformly distributed numeric arrays\nexport function interpolationSearch(arr: number[], target: number): number {\n let low = 0, high = arr.length - 1;\n while (low <= high && target >= arr[low] && target <= arr[high]) {\n if (low === high) return arr[low] === target ? low : -1;\n const pos = low + Math.floor(((target - arr[low]) * (high - low)) / (arr[high] - arr[low]));\n if (arr[pos] === target) return pos;\n if (arr[pos] < target) low = pos + 1; else high = pos - 1;\n }\n return -1;\n}\n","import { CommonOptions, getValue, defaultPrimitiveComparator } from \"../utils/comparator\";\n\nexport function exponentialSearch<T>(arr: T[], target: unknown, opts?: CommonOptions<T>): number {\n const n = arr.length;\n if (n === 0) return -1;\n const order = opts?.order ?? \"asc\";\n const cmpDir = (a: unknown, b: unknown) => (order === \"asc\" ? defaultPrimitiveComparator(a, b) : defaultPrimitiveComparator(b, a));\n\n if (defaultPrimitiveComparator(getValue(arr[0], opts?.key), target) === 0) return 0;\n let i = 1;\n while (i < n && cmpDir(getValue(arr[i], opts?.key), target) <= 0) i *= 2;\n\n // Binary search in the found range\n let low = Math.floor(i / 2), high = Math.min(i, n - 1);\n while (low <= high) {\n const mid = Math.floor((low + high) / 2);\n const midVal = getValue(arr[mid], opts?.key);\n const cmp = defaultPrimitiveComparator(midVal, target);\n if (cmp === 0) return mid;\n if (order === \"asc\") {\n if (cmp < 0) low = mid + 1; else high = mid - 1;\n } else {\n if (cmp > 0) low = mid + 1; else high = mid - 1;\n }\n }\n return -1;\n}\n","import { CommonOptions, getValue, defaultPrimitiveComparator } from \"../utils/comparator\";\n\nexport function ternarySearch<T>(arr: T[], target: unknown, opts?: CommonOptions<T>): number {\n let l = 0, r = arr.length - 1;\n const order = opts?.order ?? \"asc\";\n const cmpDir = (a: unknown, b: unknown) => (order === \"asc\" ? defaultPrimitiveComparator(a, b) : defaultPrimitiveComparator(b, a));\n\n while (r >= l) {\n const mid1 = l + Math.floor((r - l) / 3);\n const mid2 = r - Math.floor((r - l) / 3);\n const v1 = getValue(arr[mid1], opts?.key);\n const v2 = getValue(arr[mid2], opts?.key);\n\n if (defaultPrimitiveComparator(v1, target) === 0) return mid1;\n if (defaultPrimitiveComparator(v2, target) === 0) return mid2;\n\n if (cmpDir(target, v1) < 0) r = mid1 - 1;\n else if (cmpDir(target, v2) > 0) l = mid2 + 1;\n else { l = mid1 + 1; r = mid2 - 1; }\n }\n return -1;\n}\n","// Fibonacci search for sorted numeric arrays\nexport function fibonacciSearch(arr: number[], target: number): number {\n const n = arr.length;\n let fibMMm2 = 0, fibMMm1 = 1, fibM = fibMMm2 + fibMMm1;\n while (fibM < n) { fibMMm2 = fibMMm1; fibMMm1 = fibM; fibM = fibMMm2 + fibMMm1; }\n let offset = -1;\n while (fibM > 1) {\n const i = Math.min(offset + fibMMm2, n - 1);\n if (arr[i] < target) { fibM = fibMMm1; fibMMm1 = fibMMm2; fibMMm2 = fibM - fibMMm1; offset = i; }\n else if (arr[i] > target) { fibM = fibMMm2; fibMMm1 = fibMMm1 - fibMMm2; fibMMm2 = fibM - fibMMm1; }\n else return i;\n }\n if (fibMMm1 && arr[offset + 1] === target) return offset + 1;\n return -1;\n}\n","import { CommonOptions, getValue } from \"../utils/comparator\";\n\nexport function hashSearch<T>(arr: T[], target: unknown, opts?: CommonOptions<T>): number {\n const map = new Map<unknown, number>();\n for (let i = 0; i < arr.length; i++) {\n const v = getValue(arr[i], opts?.key);\n if (!map.has(v)) map.set(v, i); // first occurrence\n }\n return map.has(target) ? (map.get(target) as number) : -1;\n}\n","export function kmpSearch(text: string, pattern: string): number {\n if (pattern.length === 0) return 0;\n const lps = new Array(pattern.length).fill(0);\n let len = 0;\n for (let i = 1; i < pattern.length;) {\n if (pattern[i] === pattern[len]) lps[i++] = ++len;\n else if (len) len = lps[len - 1];\n else lps[i++] = 0;\n }\n let i = 0, j = 0;\n while (i < text.length) {\n if (text[i] === pattern[j]) { i++; j++; if (j === pattern.length) return i - j; }\n else if (j) j = lps[j - 1];\n else i++;\n }\n return -1;\n}\n","export function rabinKarpSearch(text: string, pattern: string, prime: number = 101): number {\n const m = pattern.length, n = text.length;\n if (m === 0) return 0;\n if (m > n) return -1;\n const d = 256;\n let p = 0, t = 0, h = 1;\n for (let i = 0; i < m - 1; i++) h = (h * d) % prime;\n for (let i = 0; i < m; i++) {\n p = (d * p + pattern.charCodeAt(i)) % prime;\n t = (d * t + text.charCodeAt(i)) % prime;\n }\n for (let i = 0; i <= n - m; i++) {\n if (p === t) {\n let j = 0;\n while (j < m && text[i + j] === pattern[j]) j++;\n if (j === m) return i;\n }\n if (i < n - m) {\n t = (d * (t - text.charCodeAt(i) * h) + text.charCodeAt(i + m)) % prime;\n if (t < 0) t += prime;\n }\n }\n return -1;\n}\n"]}