题解 | #快速排序#
快速排序
https://www.nowcoder.com/practice/38da660199d0400580ac3905c05f5bd6
这题是快速排序的经典的列题,首先我们要知道快速排序的原理,你首先先判断该数组是否等于空或者该数组的长度是否为空,如果为空就直接return 返回数组出去
if(array == null || array.length == 0) return array然后第二步,设置一个变量,变量值为数组中的第一个值,快速排序的原理就是小的值在数组第一个数的左边,大的值在数组第一个数的右边
let first = array[0]我们再设置两个数组,一个为用来储存第一个数组值左边的数据,然后一个用来储存第一个数组右边的数据
let left =[]; let right = [];这时候我们前期工作都已经做好啦,下面我们就要开始循环啦
for(var i =1;i<array.length;i++){ //这里从1开始 因为数组的第一个数已经拿出来啦 if(arr[i] < frist){ //数组的数 小于 第一个数 在第一个数的左边 left.push(arr[i]) }else { right.push(arr[i]) } }这个时候数组的初步排序已经做好啦,然后我们要做的是把left 数组 和right 数组 再次放到循环中进行排序
left = _quickSort(left) right = _quickSort(right)到这里数组已经全部排序完成,我们要做的就是把left frist right 依次拼接成为一个新的数组 然后返回出去
left.push(first) //首先我们把数组第一个数 push到left数组中 return left.concat(right) //然后我们用数组中的concat方法 把right 数组依次拼接在left后面