题解 | #快速排序#

快速排序

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后面







全部评论
长知识了,感谢
2 回复 分享
发布于 2022-09-17 13:43 陕西
感觉思路没问题但是通过不了用例
1 回复 分享
发布于 2023-03-30 10:24 湖北
我见过的讲的最好的快排
点赞 回复 分享
发布于 2022-11-06 14:29 江西
他这个只取数组第一个数,不行的,如果第一个数是0那就无法进行下去了,0一直是第一个数
点赞 回复 分享
发布于 2023-09-27 19:01 安徽
他的很多单词有问题 frist 和arr array 变量名不一致 所以通过不了实例
点赞 回复 分享
发布于 2023-05-14 18:18 四川
看你这个立马懂了
点赞 回复 分享
发布于 2023-03-14 19:32 浙江

相关推荐

评论
26
8
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务