let arr = [1,2,3,1,2,5,3,9,55,43];
console.log(quickSort(arr));
/**
* @description 将数组内的数值进行排序
* @param elements 要排序的数组
* @return 返回排序后的数组
* */
function quickSort(elements){
// 当数组为空或只有一个属性值则直接返回该数组
if(elements.length<=1){
return elements;
}
// 获取中间值的索引-Math.floor是去小于等于此数的最大正整数
const pivotIndex = Math.floor(elements.length/2);
// 获取中间值-利用elements.splice将对应索引的值获取到,返回的是一个数组
const pivot = elements.splice(pivotIndex,1)[0];
// 小于中间值的将数值放入left
const left = [];
// 大于或等于中间值的将数组放入right
const right = [];
// 遍历要排序的数组
for(let i=0;i<elements.length;i++){
// 当小于中间值时
if(elements[i]<pivot){
// 将其放入left
left.push(elements[i]);
}else{
// 否则放入right
right.push(elements[i]);
}
}
// 继续递归进行,最后获取到升序排序后的数组
// concat方法是连接两个或者多个数组,该方法不会改变现有的数组,而仅仅返回被链接数组的一个副本
return quickSort(left).concat([pivot],quickSort(right));
}
console