快速排序用到以下方法
Math.floor->返回小于或等于一个给定数字的最大整数
Math.floor(0.6); // output: 0
Math.floor(0.2); //output: 0
Math.floor(-0.2); // output: -1
Math.floor(-0.6); // output: -1
splice->向/从数组中添加/删除项目,然后返回被删除的项目, splice会改变原数组的长度。
语法: arrayObject.splice(index,howmany,item1,.....,itemX)
参数:
index->必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany->必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, ..., itemX->可选。向数组添加的新项目。
var arr = [1, 2, 3, 4, 5];
var arrRemove = arr.splice(0, 2); // arr = [3, 4, 5]; arrRemove = [1, 2];
arr.splice(1, 0, 8); // arr = [3, 8, 4, 5]
contact->用于连接两个或多个数组
语法: arrayObject.concat(arrayX,arrayX,......,arrayX)
var arr1 = [1, 2];
var arr2 = [3, 4];
var arrConcat = arr1.concat(arr2);
console.log(arrConcat) // arrConcat = [1, 2, 3, 4]
push->可向数组的末尾添加一个或多个元素,并返回新的长度
语法:arrayObject.push(newelement1,newelement2,....,newelementX)
var arr = [1, 2, 3];
console.log(arr.push(4)); // 4
console.log(arr); // [1, 2, 3, 4]
快速排序:取中间位置值为基准,剩余数据与其相比较,比基准大放右边,比基准小放左边,递归不断重复这个过程,可得到排序后的数组。
function quickArray(arr) {
var len = arr.length;
var leftArr = [];
var rightArr = [];
if (len <= 1) {
return arr;
}
var midIndex = Math.floor(len / 2);
var midNumber = arr.splice(midIndex, 1)[0];
for (var i = 0; i < len - 1; i++) {
if (arr[i] < midNumber) {
leftArr.push(arr[i]);
} else {
rightArr.push(arr[i]);
}
}
return quickArray(leftArr).concat([midNumber], quickArray(rightArr));
}
参考连接: http://www.ruanyifeng.com/blog/2011/04/quicksort_in_javascript.html