嘗試在JavaScript中遞歸地編寫它。我得到了和以前一樣的數組(即沒有改變)。我的穩定分區算法存在哪些缺陷?
缺陷在哪裏?
function unstable_partition (arr, f)
{
if(arr.length <= 1)
return arr;
var n = arr.length - 1;
if(f(arr[0]))
return unstable_partition(arr.slice(0,n),f).concat([arr[0]]);
else if(!f(arr[n]))
return [arr[n]].concat(unstable_partition(arr.slice(0,n - 1),f));
else
return [arr[0]].concat(unstable_partition(arr.slice(1,n - 1)),f).concat([arr[n]]);
}
var isEven = function(x) { return x % 2 == 0; }
var myArray = [1,2,3,3,4,5];
alert(unstable_partition(myArray,isEven).join(","));
它不會返回同一陣列我。並且順便說一句,你誤會了你最後的回報,不應該是'return [arr [0]]。concat(unstable_partition(arr.slice(1,n-1),f))。concat([arr [n]] );'? – choz