前端javascript,使用递归的方式实现快速排序算法。
思想是,通过中间下标分成前后两部分,用中间值作为分界线,数组中除中间值外的数据,小于中间值的数据放到before数组,大于中间值的数据放到after数组,一直递归分割before数组和after数组,直到最后before数组和after数组只剩下一个值,最终返回的数据,就是排序后的数据。
const a=[23,56,98,93,1,32]
function sortArray(arr){
if(arr.length<=1) return arr // 如果只剩下一个数据,返回
const middleIndex=Math.floor(arr.length/2) // 中间下标值
const before=[]
const after=[]
const middle=arr[middleIndex] // 中间值
arr.forEach((item,index) =>{
if(index!==middleIndex){ // 排除中间值
item < middle ? before.push(item): after.push(item)
}
})
return sortArray(before).concat(middle,sortArray(after)) // 递归排序before和after数组
}
console.log(sortArray(a))
// 最终打印
// [1,23,32,56,93,98]