快速排序用到以下方法
Math.floor->返回小于或等于一個(gè)給定數(shù)字的最大整數(shù)
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->向/從數(shù)組中添加/刪除項(xiàng)目,然后返回被刪除的項(xiàng)目, splice會(huì)改變?cè)瓟?shù)組的長(zhǎng)度。
語法: arrayObject.splice(index,howmany,item1,.....,itemX)
參數(shù):
index->必需。整數(shù),規(guī)定添加/刪除項(xiàng)目的位置,使用負(fù)數(shù)可從數(shù)組結(jié)尾處規(guī)定位置。
howmany->必需。要?jiǎng)h除的項(xiàng)目數(shù)量。如果設(shè)置為 0,則不會(huì)刪除項(xiàng)目。
item1, ..., itemX->可選。向數(shù)組添加的新項(xiàng)目。
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->用于連接兩個(gè)或多個(gè)數(shù)組
語法: 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->可向數(shù)組的末尾添加一個(gè)或多個(gè)元素,并返回新的長(zhǎng)度
語法:arrayObject.push(newelement1,newelement2,....,newelementX)
var arr = [1, 2, 3];
console.log(arr.push(4)); // 4
console.log(arr); // [1, 2, 3, 4]
快速排序:取中間位置值為基準(zhǔn),剩余數(shù)據(jù)與其相比較,比基準(zhǔn)大放右邊,比基準(zhǔn)小放左邊,遞歸不斷重復(fù)這個(gè)過程,可得到排序后的數(shù)組。
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