排序算法之 快速排序

    xiaoxiao2022-07-13  160

    快速排序:

    思路分析:取中间值,分左右两个数组,左边放比取的中间值小的,右边放取的比中间值大的。递归调用left和right,然后concat函数拼接。

    涉及小知识:

    1.concat 连接数组,方法内接受一个或者多个值,不会改变原始数组,返回一个副本。

    2. Math.floor()向下取整。

    function quickSort(arr) { if (arr.length <= 1) { return arr; } var num = Math.floor(arr.length/2); // 取中间的一个数组的下标 var numVal = arr.splice(num, 1); // 取出中间值 var left = [];//定义左边空数组,左边这个放比numVal小的数 var right = [];// 定义右边空数组,右边这个放比numVal大的数 for (var i = 0;i< arr.length;i++) { if (arr[i] < numVal) { left.push(arr[i]); } else { right.push(arr[i]); } } return quickSort(left).concat(numVal, quickSort(right)); }

     

     

    最新回复(0)