问题描述
const pivot2 = (arr,low = 0,high = arr.length -1) => {
let pivot = arr[low];
let index = low;
for(let i = low + 1; i <= high; i++){
if(pivot > arr[i]){
index++;
[arr[index],arr[i]] = [arr[i],arr[index]];
}
}
[arr[low],arr[index]] = [arr[index],arr[low]];
return index;
}
const quickSort2 = (arr,high = arr.length - 1) => {
if(low < high){
let pivot = pivot2(arr,low,high);
quickSort2(arr,pivot - 1);
quickSort2(arr,pivot + 1,high);
}
return arr;
}
console.log(quickSort2([5,2,1,8,4,7,6,3]));
但是,当我在ivot2函数表达式中使用pivot
而不是arr[low]
时,我的答案显示不正确(它变成[5,5,5,5,5,7,7, 8],而不是[1、2、3、4、5、6、7、8])。我以为会得到相同的结果,因为我之前将arr[low]
分配给pivot
。有人可以向我解释这个概念或对此有任何想法吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)