简单算法--快速排序

快速排序

核心:二分法,递归;

 

推荐一个把复杂烧脑的算法计算过程转为可视化动画的网站,里面还有数据结构等等好多的好东西!!!

https://visualgo.net/en

 1         //快排  2         function Quicksort(arr){  3             //递归的边界,计算到中间值只有它自己就排序成功了;  4             if(arr.length <= 1){  5                 return arr  6             }  7             //计算数组的相对中间下标,然后取出中间下标对应的值;  8             let index = Math.round(arr.length/2);  9             let centerNumber = arr.splice(index,1); 10             //两个空数组,准备存储; 11             let Leftarr = []; 12             let Rightarr = []; 13             //循环对比,跟中间值比;比它小的放左边,大的放右边; 14             for(let i=0; i<arr.length; i++){ 15                 if(arr[i]<centerNumber){ 16                     Leftarr.push(arr[i]) 17                 }else{ 18                     Rightarr.push(arr[i]) 19                 } 20             } 21             //递归,数组合并,中间值,自然放中间; 22             return Quicksort(Leftarr).concat(centerNumber,Quicksort(Rightarr)) 23         }