通过分解分配交换两个元素时使用变量和数组元素有什么区别

问题描述

我正在学习快速排序,这是下面的代码

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 (将#修改为@)