快排、插入、冒泡排序
快排实现:
// 快速排序 function quickSort(arr) { // 长度为1表示不可再分割 返回数组 if (arr.length <= 1) { return arr; } // 基数位置默认为中间 var p = Math.floor(arr.length / 2); var el = arr.splice(p, 1)[0]; // 左边存储比基数小的 右边存储比基数大的 var left = [], right = []; // 遍历数组 for (var i = 0; i < arr.length; i++) { if (arr[i] < el) { left.push(arr[i]); } else { right.push(arr[i]); } } // 左-基数-右 return quickSort(left).concat([el], quickSort(right)); } var arr = [6, 2, 5, 7, 3]; console.log(quickSort(arr));
插入排序:
function InsertionSort(a) { var to = a.length, from = 0; for (var i = from + 1; i < to; i++) { var element = a[i]; for (var j = i - 1; j >= from; j--) { var tmp = a[j]; var order = (tmp - element); if (order > 0) { a[j + 1] = tmp; } else { break; } } a[j + 1] = element; } return a; };
冒泡:
function bubble(arr) { for (var i = arr.length; i--;) { for (var j = 0; j < i; j++) { (arr[j] > arr[j + 1]) && ([arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]); } } return arr; }
老子要日穿V8引擎