0
我正在使用遞歸和過濾器進行快速排序,但遞歸無法正常工作。 它返回列表的前半部分,排序+額外(從上一次遞歸的樞軸和列表的後半部分),但列表的後半部分消失。 這是我的代碼。在JavaScript中使用過濾器進行快速排序
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 ]
第一次快速排序被調用時,
part1的是[4,3,1,2,2, 1]
p ivot是5
2部分是[7,6,8,7]
和基本上,[ 7, 6, 8, 7 ]
剛好消失。
我很感謝任何見解和建議。謝謝!
我明白了。這解釋了很多。它現在工作!非常感謝! –