快速排序实现 亦凉 2021-07-24 18:43 378阅读 0赞 通过基准值查找,设定第一个为基准值,则比它小的放在左边数组,否则放在右边数组,下次迭代时,依旧按照此规则,则会一直找到最小的 因为每次根据基准值分左右,所以最终基准值就会是最值,没有比最值大或小的,所以递归调用的Quick会返回空[],因为先执行小的递归,再执行大的递归,递归进入回滚,将每次分组的最小基准值依次连接起来,最后形成从小到大的排序实现 (() => { function Quick(list) { if (list.length == 0) { return []; } let pivot = list[0]; let lesser = []; let greater = []; for (let i = 1; i < list.length; i++){ //快排:安装基准值排序,小于基准值放在左边,大于放在右边 if (list[i] < pivot) { lesser.push(list[i]); } else { greater.push(list[i]); } } return Quick(lesser).concat(pivot,Quick(greater)); } let res=Quick([44,75,23,43,55,12,64,77]) console.log(res); })()
还没有评论,来说两句吧...