By Noxxxx from https://www.noxxxx.com/?post_type=post&p=471
欢迎分享与聚合,尊重版权,可以联系授权
使用 Js 实现 快排。
原理: 从数组中取出一个值(通常取中间的那个),小于该基准值的放在左侧,大于该基准值放右侧,循环往复。
var quickSort = function(arr) { if(arr.length <= 1) return arr; var middleIndex = Math.floor(arr.length /2); var middleValue = arr.splice(middleIndex,1); var right = []; var left = []; for(var i = 0;i<arr.length;i++){ arr[i] < middleValue ? left.push(arr[i]) : right.push(arr[i]); } return quickSort(left).concat(middleValue,quickSort(right)) }
插入排序
function insertSort(arr) { var len = arr.length; for (var i = 1; i < len; i++) { var currentVal = arr[i]; var pre = i - 1; while (pre >= 0 && arr[pre] > currentVal) { arr[pre + 1] = arr[pre]; pre--; } arr[pre + 1] = currentVal; } return arr; }