快速排序
1. 原理:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据比另一部分的所有数据要小,再按这种方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,使整个数据变成有序序列。
2. 代码实现:
1 function quickSort(arr) { 2 var len = arr.length; 3 if (len <= 1) return arr; 4 var midIndex = Math.floor(len / 2); 5 var mid = arr.splice(midIndex, 1)[0]; 6 var left = []; 7 var right = []; 8 for (var i = 0; i < len; i++) { 9 if (arr[i] > mid) { 10 left.push(arr[i]); 11 } else { 12 right.push(arr[i]); 13 } 14 } 15 return quickSort(left).concat([mid], quickSort(right)); 16 }
3.时间复杂度:O (nlogn)
空间复杂度:O (logn)

浙公网安备 33010602011771号