今天給大家介紹的是javascript中的快速排序算法。
快速排序:
1梢灭、通過(guò)數(shù)組長(zhǎng)度饼灿,來(lái)找到數(shù)組中間的那個(gè)值(基準(zhǔn)值)
2幕侠、分別拿數(shù)組中其他值和該值進(jìn)行比較,如果邪怼(大)于該基準(zhǔn)值就直接添加到left數(shù)組中晤硕,如果大(小)于該基準(zhǔn)值添加到right數(shù)組中庇忌,形成兩個(gè)數(shù)組
3舞箍、利用遞歸分別對(duì)left和right進(jìn)行相同的排序操作
4、最終判斷arr的長(zhǎng)度是否小于等于1皆疹,如果是:說(shuō)明數(shù)組已經(jīng)剩一個(gè)值了無(wú)需進(jìn)行排序了疏橄,直接返回該數(shù)組
5、最終返回 left數(shù)組+基準(zhǔn)值+right數(shù)組略就,就是你想要的排序結(jié)果
代碼示例:
function quickSort( arr ){
if( arr.length <= 1 ){
return arr;
}
var num = Math.floor( arr.length / 2 );
var numValue = arr.splice( num, 1 );
var left = [];
var right = [];
for( var i = 0; i < arr.length; i ++ ){
if( arr[i] < numValue ){
left.push( arr[i] );
}else{
right.push( arr[i] );
}
}
return quickSort( left ).concat( [numValue], quickSort(right) );
}