javaScript系列---【数组对象--快速排序】
<script> var arr = [12, 13, 23, 14, 20, 26, 34, 13, 16]; // 快速排序 // 核心思想:用当前这个数组的基准值(中间项)和其它每一项进行比较,比这一项大的放到右边,比这一项小的放到左边(放到数组中) //基准值(中间项) //var index = Math.floor(arr.length/2); function quickSort(arr) { if (arr.length <= 1) { return arr; } // 中间项的索引 var pointIndex = Math.floor(arr.length / 2); // 基准值(中间项) var pointValue = arr.splice(pointIndex, 1)[0]; console.log(pointValue); // 用当前这个数组的基准值(中间项)和其它每一项进行比较,比这一项大的放到右边,比这一项小的放到左边(放到数组中) var left = [], right = []; for (var i = 0; i < arr.length; i++) { // 用当前这个数组的基准值(中间项)和其它每一项进行比较,比这一项大的放到右边,比这一项小的放到左边(放到数组中) arr[i] < pointValue ? left.push(arr[i]) : right.push(arr[i]); } return quickSort(left).concat(pointValue, quickSort(right)); } var resArr = quickSort(arr); console.log(resArr); console.log(arr); </script>