Launch Week Day 1: Socket for Jira Is Now Available.Learn More
Socket
Book a DemoSign in
Socket

@any86/quick-sort

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@any86/quick-sort - npm Package Compare versions

Comparing version
0.0.3
to
0.0.4
+4
-1
dist/index.js

@@ -0,1 +1,3 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function compareNumber(pivotItem, currentItem) {

@@ -21,3 +23,3 @@ return pivotItem - currentItem;

}
export default function quickSort(array, compareFn = compareNumber) {
function quickSort(array, compareFn = compareNumber) {
const startIndex = 0;

@@ -39,2 +41,3 @@ const endIndex = array.length - 1;

}
exports.default = quickSort;
//# sourceMappingURL=index.js.map
+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,SAAS,aAAa,CAAC,SAAiB,EAAE,WAAmB;IACzD,OAAO,SAAS,GAAG,WAAW,CAAC;AACnC,CAAC;AASD,SAAS,SAAS,CAAgB,KAAa,EAAE,UAAkB,EAAE,QAAgB,EAAE,SAAwB;IAE3G,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;IAEhC,IAAI,WAAW,GAAG,UAAU,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,EAAE;QAC7C,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE;YAChC,WAAW,EAAE,CAAC;YACd,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;SAC/B;KACJ;IACD,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IACrC,OAAO,WAAW,CAAC;AACvB,CAAC;AAGD,SAAS,IAAI,CAAC,KAAgB,EAAE,CAAS,EAAE,CAAS;IAChD,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACnB,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACpB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjB,CAAC;AAWD,MAAM,CAAC,OAAO,UAAU,SAAS,CAAgB,KAAa,EAAE,YAA2B,aAAoB;IAC3G,MAAM,UAAU,GAAG,CAAC,CAAC;IACrB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAElC,MAAM,KAAK,GAAuB,EAAE,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE;QACvB,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QAC5C,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACrE,IAAI,UAAU,GAAG,UAAU,GAAG,CAAC,EAAE;YAC7B,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;SAC5C;QACD,IAAI,UAAU,GAAG,CAAC,GAAG,QAAQ,EAAE;YAC3B,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;SAC1C;KACJ;IACD,OAAO,KAAK,CAAC;AACjB,CAAC"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAOA,SAAS,aAAa,CAAC,SAAiB,EAAE,WAAmB;IACzD,OAAO,SAAS,GAAG,WAAW,CAAC;AACnC,CAAC;AASD,SAAS,SAAS,CAAgB,KAAa,EAAE,UAAkB,EAAE,QAAgB,EAAE,SAAwB;IAE3G,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;IAEhC,IAAI,WAAW,GAAG,UAAU,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,EAAE;QAC7C,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE;YAChC,WAAW,EAAE,CAAC;YACd,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;SAC/B;KACJ;IACD,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IACrC,OAAO,WAAW,CAAC;AACvB,CAAC;AAGD,SAAS,IAAI,CAAC,KAAgB,EAAE,CAAS,EAAE,CAAS;IAChD,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACnB,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACpB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjB,CAAC;AAWD,SAAwB,SAAS,CAAgB,KAAa,EAAE,YAA2B,aAAoB;IAC3G,MAAM,UAAU,GAAG,CAAC,CAAC;IACrB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAElC,MAAM,KAAK,GAAuB,EAAE,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE;QACvB,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QAC5C,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACrE,IAAI,UAAU,GAAG,UAAU,GAAG,CAAC,EAAE;YAC7B,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;SAC5C;QACD,IAAI,UAAU,GAAG,CAAC,GAAG,QAAQ,EAAE;YAC3B,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;SAC1C;KACJ;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAjBD,4BAiBC"}

@@ -1,1 +0,1 @@

function compareNumber(pivotItem,currentItem){return pivotItem-currentItem}function partition(array,startIndex,endIndex,compareFn){const pivot=array[startIndex];let divideIndex=startIndex;for(let i=startIndex+1;i<=endIndex;i++){if(0>compareFn(array[i],pivot)){divideIndex++;swap(array,divideIndex,i)}}swap(array,divideIndex,startIndex);return divideIndex}function swap(array,i,j){const v=array[i];array[i]=array[j];array[j]=v}export default function quickSort(array,compareFn=compareNumber){const startIndex=0;const endIndex=array.length-1;const stack=[];stack.push([startIndex,endIndex]);while(0!==stack.length){const[startIndex,endIndex]=stack.pop();const pivotIndex=partition(array,startIndex,endIndex,compareFn);if(startIndex<pivotIndex-1){stack.push([startIndex,pivotIndex-1])}if(pivotIndex+1<endIndex){stack.push([pivotIndex+1,endIndex])}}return array}
"use strict";Object.defineProperty(exports,"__esModule",{value:true});function compareNumber(pivotItem,currentItem){return pivotItem-currentItem}function partition(array,startIndex,endIndex,compareFn){const pivot=array[startIndex];let divideIndex=startIndex;for(let i=startIndex+1;i<=endIndex;i++){if(0>compareFn(array[i],pivot)){divideIndex++;swap(array,divideIndex,i)}}swap(array,divideIndex,startIndex);return divideIndex}function swap(array,i,j){const v=array[i];array[i]=array[j];array[j]=v}function quickSort(array,compareFn=compareNumber){const startIndex=0;const endIndex=array.length-1;const stack=[];stack.push([startIndex,endIndex]);while(0!==stack.length){const[startIndex,endIndex]=stack.pop();const pivotIndex=partition(array,startIndex,endIndex,compareFn);if(startIndex<pivotIndex-1){stack.push([startIndex,pivotIndex-1])}if(pivotIndex+1<endIndex){stack.push([pivotIndex+1,endIndex])}}return array}exports.default=quickSort;
{
"name": "@any86/quick-sort",
"version": "0.0.3",
"version": "0.0.4",
"description": "快速排序",

@@ -13,2 +13,5 @@ "main": "dist/index.js",

],
"files": [
"dist"
],
"author": "any86",

@@ -43,3 +46,3 @@ "homepage": "https://github.com/any86/my/packages/clickOutside#readme",

},
"gitHead": "f7194f06e61921dbd3f6969114d40673361b6111"
"gitHead": "abd05f4ec67efd5ee4bd8af4ec451256fc2adc0d"
}
module.exports = {
preset: 'ts-jest/presets/js-with-babel',
testEnvironment: 'jsdom',
collectCoverage: true,
verbose: false,
};
type Compare<T> = (pivotItem: T, currentItem: T) => number;
/**
* 比较函数
* @param pivotItem 待比较值
* @param currentItem 当前值
* @returns 数组,大于0正序,反之倒序
*/
function compareNumber(pivotItem: number, currentItem: number): number {
return pivotItem - currentItem;
}
/**
* 分区,
* @param array
* @param startIndex
* @param endIndex
* @returns
*/
function partition<Item = number>(array: Item[], startIndex: number, endIndex: number, compareFn: Compare<Item>) {
// 参考值
const pivot = array[startIndex];
// 分割标准值的索引
let divideIndex = startIndex;
for (let i = startIndex + 1; i <= endIndex; i++) {
if (0 > compareFn(array[i], pivot)) {
divideIndex++;
swap(array, divideIndex, i);
}
}
swap(array, divideIndex, startIndex);
return divideIndex;
}
function swap(array: unknown[], i: number, j: number) {
const v = array[i];
array[i] = array[j];
array[j] = v;
}
/**
* 快速排序(原地排序)
* 通过参数可以选择被排序的索引范围
* 参考: https://zhuanlan.zhihu.com/p/109971850
* @param array 数组
* @param startIndex 起始索引
* @param endIndex 结束索引
* @returns
*/
export default function quickSort<Item = number>(array: Item[], compareFn: Compare<Item> = compareNumber as any): Item[] {
const startIndex = 0;
const endIndex = array.length - 1;
const stack: [number, number][] = [];
stack.push([startIndex, endIndex]);
while (0 !== stack.length) {
const [startIndex, endIndex] = stack.pop()!;
const pivotIndex = partition(array, startIndex, endIndex, compareFn);
if (startIndex < pivotIndex - 1) {
stack.push([startIndex, pivotIndex - 1]);
}
if (pivotIndex + 1 < endIndex) {
stack.push([pivotIndex + 1, endIndex]);
}
}
return array;
}
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "dist",
"declarationDir": "dist"
},
"include": ["src/index.ts"]
}