/*快速排序
* 实现原理:
* 1.快速排序是对冒泡排序的一种改进,第一趟排序时将数据分成两部分,(Math.floor()方法可对一个数进行下舍入。)
* splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。(arr.splice(pivoIndex,1)[0]返回中间的数值。)
* 然后申明两个数组,比中间数值小的放进左数组,比中间数值大的放进右数组。左数组比右数组的所有数据都要小
* 2.递归调用,在两边都实行快速排序
* */
function quickSort(arr) {
if ( arr.length <= 1 ) {
return arr;
}
var pivoIndex = Math.floor(arr.length / 2);
var pivot = arr.splice(pivoIndex,1)[0];
var left = [];
var right = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat([pivot],quickSort(right));
};
var arr2 = [5,3,68,12,47,51,2,9,4,1,8,61,37,69,0,1.2,5.3,9.5];
console.log(quickSort(arr2));