代码arr[pivotIndex]和arr.splice(pivotIndex,1)[0]的区别在

用arr[pivotIndex]代替arr.splice(pivotIndex,1)[0]时报错,错误信息如下图:

https://img4.mukewang.com/5c233bcf0001182504250184.jpg

代码如下,注释掉的代码为出错的代码:

function quickSort (arr) {

        if (arr.length<=1) {

            return arr;

        };

        let left = [],

            right = [],

            pivotIndex = Math.floor(arr.length/2);

        //let pivot = arr[pivotIndex],   //直接获取arr[pivotIndex]赋值给pivot时报错

        let pivot = arr.splice(pivotIndex,1)[0]; //用词句代码可以正确输出排序结果

        for (let i=0; i<arr.length; i++) {

            if (arr[i] <= pivot) {

                left.push(arr[i]);

            } else {

                right.push(arr[i]);

            }

        }

        return quickSort(left).concat(pivot,quickSort(right));

    }


    console.log('纯JS快排结果: '+quickSort(newarr))


RISEBY
浏览 1596回答 1
1回答

芜湖不芜

splice()是在原来数组上修改的,每次都删除了一个元素。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript