【发布时间】:2016-05-06 21:20:18
【问题描述】:
我将继续尝试在 Node.js 上编写算法,就像在 Algorithms, 4th ed 一书中一样。塞奇威克,韦恩。那里有所有用 Java 编写的示例。
我有这个快速排序模块:
"use strict";
const _ = require('lodash');
module.exports = (function () {
function _partition(array, lo, hi) {
let i = lo;
let j = hi + 1;
let v = array[lo];
while (true) {
while (_less(array[++i], v)) {
if (i === hi) {
break;
}
}
while (_less(v, array[--j])) {
if (j === lo) {
break;
}
}
if (i >= j) {
break;
}
_exch(array, i, j);
}
_exch(array, lo, j);
return j;
}
function sort(array) {
_sort(array, 0, array.length - 1);
}
function _sort(array, lo, hi) {
if (hi <= lo) {
return null;
}
let j = _partition(array, lo, hi);
_sort(array, lo, j - 1);
_sort(array, j + 1, hi);
}
function _less(array, i, min) {
return array[i] < array[min];
}
function _exch(array, i, min) {
let temp = array[i];
array[i] = array[min];
array[min] = temp;
}
return {
sort: sort
};
})();
我使用 mocha 和 chai 来测试这个功能:
function isSorted(array) {
for(let i = 1, size = array.length; i < size; i++) {
if (array[i] < array[i-1]) {
return false;
}
}
return true;
}
快速排序不起作用。 我需要与书中相同的实现,但在 js 上。
您可以在此处查看原始实现:quick sort in java
【问题讨论】:
-
您需要与书中相同的实现吗?或者你需要一个有效的 javascript 快速排序算法?
-
那么你不能调试到底是什么不工作,看看哪个步骤失败了?
标签: javascript node.js algorithm sorting