zoukankan      html  css  js  c++  java
  • 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];。必须重新赋值给新的数组,不能使用原来的引用

  • 相关阅读:
    Alpha冲刺总结
    软工实践个人总结
    9组Beta冲刺3/5
    9组Beta冲刺总结
    9组Alpha冲刺6/6
    9组Beta冲刺2/5
    9组Alpha冲刺5/6
    9组Beta冲刺1/5
    cocos2d: 使用TexturePacker , pvr.ccz, CCSpriteBatchNode, CCSpriteFrameCache
    cocos2d: 设置容器透明度及添加UIViewController
  • 原文地址:https://www.cnblogs.com/hehedaa/p/8336882.html
Copyright © 2011-2022 走看看