首先,冒泡排序里面的j要改成i;j=j = arr.length
在function fastsort方法中,alert(arr.length)这是个死循环,永远都不会进入arr.length<=1的时候;你没有把arr里面的值移除 if (key >= arr[i]) {
arrLeft.push(arr[i]);
arr.substring(移除当前值)
} else {
arrRight.push(arr[i]);
同理
}
@积累轩: if (key >= arr[i]) {
arrLeft.push(arr[i]);
} else {
arrRight.push(arr[i]);
}
arr.splice(i, 1);
改成这样后就只剩下两个值了,也不对呀。
@积累轩: 其实你说的也不全对,我改了下,ok了。
function fastSort() {
var a = arguments[0];
if(a.length <=1) {
return a;
} else {
var key = a[0];
var arrLeft = [];
var arrRight = [];
var arrConcat = [];
for(var i = 1; i < a.length; i++) {
if (key > a[i]) {
arrLeft.push(a[i]);
} else {
arrRight.push(a[i]);
}
}
arrLeft = fastSort(arrLeft);
arrRight = fastSort(arrRight);
return arrConcat.concat(arrLeft, key, arrRight);
}
}
@风之约: 那恭喜了
你这个逻辑完全错误!
请问哪里错了?