JavaScript中使用过滤器的快速排序

JavaScript中使用过滤器的快速排序,javascript,sorting,recursion,quicksort,Javascript,Sorting,Recursion,Quicksort,我正在使用递归和过滤器进行快速排序,但是递归不能正常工作。 它返回到排序为+extra的列表的前半部分(枢轴和上一个递归的列表的后半部分),但列表的后半部分消失。 这是我的密码 const{ 列表 }=require('不可变') 常量快速排序=函数(列表){ 如果(list.size x>pivot); 返回快速排序(part1).concat(list.last(),快速排序(part2)); }; log(“快速排序:+快速排序(列表([4,7,3,6,8,7,1,2,2,1,5]))v

我正在使用递归和过滤器进行快速排序,但是递归不能正常工作。 它返回到排序为+extra的列表的前半部分(枢轴和上一个递归的列表的后半部分),但列表的后半部分消失。 这是我的密码

const{
列表
}=require('不可变')
常量快速排序=函数(列表){
如果(list.size x>pivot);
返回快速排序(part1).concat(list.last(),快速排序(part2));
};

log(“快速排序:+快速排序(列表([4,7,3,6,8,7,1,2,2,1,5]))
var
let
const
声明缺失。如果没有这些变量,
pivot
part1
part2
是全局变量。排序
part1
后,
part2
被覆盖为空列表(因为这是递归上一个分支的终止情况)。只要
您的VAR适当地本地:p。像这样:

let pivot = list.last();
let part1 = list.pop().filter((x) => x <= pivot);
let part2 = list.pop().filter((x) => x > pivot);
let pivot=list.last();
让part1=list.pop().filter((x)=>x>pivot);

课程
“严格使用”

var
let
const
声明缺失。如果没有这些变量,
pivot
part1
part2
是全局变量。排序
part1
后,
part2
被覆盖为空列表(因为这是递归上一个分支的终止情况)。只要
您的VAR适当地本地:p。像这样:

let pivot = list.last();
let part1 = list.pop().filter((x) => x <= pivot);
let part2 = list.pop().filter((x) => x > pivot);
let pivot=list.last();
让part1=list.pop().filter((x)=>x>pivot);

课程
“严格使用”

我明白了。这解释了很多。现在可以用了!!非常感谢你!我懂了。这解释了很多。现在可以用了!!非常感谢你!