js快速排序笔记

冒泡和快速排序

这两种排序方式是最常见也是面试最容易提及到的内容,这里做个比较加以理解

  1. 冒泡排序就是一遍一遍循环N*N次比较这里不做详解

  2. 快速排序就是取一个数组的中间值,然后小于的放左边,大于的放右边,然后递归quickSort(left).concat(mid,quickSort(right));

    var arr =[2,9,0,4,4,6,3,8,10,2,6,4];

    arr = quickSort(arr)//这个必须重新赋值给arr,否则在下面标红的地方改变了原来的数组,直接取arr会是未排序且删除掉中间值的一个数组。 function quickSort(arr){ if(arr.length<=1){//长度小于等于1的直接返回数组 return arr; } var mid = Math.floor(arr.length/2); mid = arr.splice(mid,1)[0];//提取中间值(arr原来数组会去掉mid这个值,并且返回mid位置的值) var left=[],right=[]; for(var i=0;i<arr.length;i++){ if(arr[i]<=mid){//将等于比较值的放回左边或者右边,不然重复的数字会去掉 left.push(arr[i]); } if(arr[i]>mid){ right.push(arr[i]); } } return quickSort(left).concat(mid,quickSort(right));//数组拼接 }

      

 注意:特别注意代码块当中标红的地方mid = arr.splice(mid,1)[0];。必须重新赋值给新的数组,不能使用原来的引用

posted @ 2018-01-23 17:21  这月过后  阅读(133)  评论(0编辑  收藏  举报