思路
快速排序在基本思想上和归并排序是一致的,仍然坚持“分而治之”的原则不动摇,即取数组中间下标的值,再将其他值与该值相比,大于加入右数组,小于加入左数组,递归调用
实现
function quickSort(arr){if(!Array.isArray(arr)){throw new TytpeError('类型错误');}let len = arr.length;// 递归出口条件if(len <= 1){return arr;}// 获取中间下标var centerindex = Math.floor(len/2);// 获取中间下标对应的值var centerElement = arr[centerindex];// 创建左右数组var leftArr = [];var rightArr = [];// 循环判断,若元素大于中间下表对应的值则加入左数组,反之加入右数组for(var i = 0;i<len;i++){if((i != centerindex) && (arr[i] >= centerElement)){rightArr.push(arr[i]);}if((i != centerindex) && (arr[i] < centerElement)){leftArr.push(arr[i]);}}//递归调用该函数return quickSort(leftArr).concat(centerElement, quickSort(rightArr));}
