文章地址 https://www.cnblogs.com/sandraryan/
function sort(arr){ // 如果数组中中有一个元素,返回数组 if(arr.length<1){ return arr; } // Math.floor() 取得小于等于x的最大整数(下舍入) // 获取当前数组一半的数字 var basic = Math.floor(arr.length/2); // 从数组中删除该基数 // [0]选中该数 var dele = arr.splice(basic,1)[0]; // console.log(dele); // 创建两个空数组,承接大于/小于基数的原始数组值 var left = []; var right = []; for(var i = 0; i < arr.length; i++){ // <是升序排列,>是降序排列 // 遍历数组中的元素,如果小于该基数,放进右边,大于奇数,放进左边 if(arr[i]<dele){ left.push(arr[i]); }else{ right.push(arr[i]); } } // 拼接left + 基数 +right的数组,作为快速排序函数的返回值 return sort(left).concat([dele],sort(right)); } var arr = [58,13,99,57,29,89,0,45,23,30]; console.log(sort(arr));