【发布时间】:2017-06-19 00:54:40
【问题描述】:
我正在使用递归和过滤器进行快速排序,但递归无法正常工作。 它返回到排序列表的前半部分 + 额外(从最后一次递归中枢轴和列表的后半部分),但列表的后半部分消失了。 这是我的代码。
const {
List
} = require('immutable')
const quicksort = function(list) {
if (list.size <= 1) {
return list;
}
pivot = list.last();
part1 = list.pop().filter((x) => x <= pivot);
part2 = list.pop().filter((x) => x > pivot);
return quicksort(part1).concat(list.last(), quicksort(part2));
};
console.log("quicksort: " + quicksort(List([4, 7, 3, 6, 8, 7, 1, 2, 2, 1, 5])));
然后打印出来
quicksort: List [ 1, 1, 2, 3, 3, 3, 5 ]
第一次调用快速排序,
第 1 部分是 [ 4, 3, 1, 2, 2, 1 ]
轴心为 5
第 2 部分是 [ 7, 6, 8, 7 ]
基本上,[ 7, 6, 8, 7 ] 就消失了。
感谢任何见解和建议。谢谢!
【问题讨论】:
标签: javascript sorting recursion quicksort