/** 快速排序 * 快速排序是对冒泡排序的一种改进, * 第一趟排序时将数据分成两部分,一部分比另一部分的所有数据都要小。 * 然后递归调用,在两边都实行快速排序。 * **/ function quickSort(arr) { if (arr.length <= 1) { return arr; } let midIndex = Math.floor(arr.length/2); const midValue = arr.splice(midIndex,1)[0]; let left = []; let right = []; for (let i = 0; i < arr.length; i++) { if (arr[i] < midValue) { left.push(arr[i]); } else { right.push(arr[i]); } } // return [7, 6].concat([8], [10, 9]); // return left.concat([midValue], right); // 递归调用 在左右两边都执行快速排序 return quickSort(left).concat([midValue], quickSort(right)); } let arr = [1, 4, 2, 1, 5, 2, 8, 6, 9, 7]; let result = quickSort(arr); console.log(result);