zoukankan      html  css  js  c++  java
  • 算法(二分查找,快速排序)

    老夫又回来更了,这次就写全世界都会而我不会的算法吧

     

    首先是快速排序了。快速排序分为三步

    1、找基准,

    2、排序,小三在左边房子(数组),大老婆在右边房子(数组)

    3、大老婆小老婆出来谈谈,合并一下,都是一家人。

    好了,知道这几步了那么开始写吧。

    function fn(arr){
      if(arr.length<=1){
        return arr
          }
         var newArr = Math.floor((arr.length)/2);
         var endArr = arr.splice(newArr,1)[0];
         var left = [],
            right = [];
        for(var i = 0; i < arr.length; i++){
            if(arr[i]<endArr){
                left.push(arr[i]);
            } else {
                right.push(arr[i]);
                }
      }
      return  fn(left).concat(endArr,fn(right))
    }   

      接下来就是二分查找,有一种游戏是0~100猜一个数字,比如猜65,你猜40然后获得提示是偏大还是偏小,最后往答案的正确方向走。

    那么二分查找其实跟这样的是类似的,那么一起来开心的写代码吧

    function twoPointLookup(arr,low,high,key){
      if(low > high){
        return -1
      }
      var num = parseInt((low + high) / 2);
      if(key == arr[num]){
        return num 
      }else if(arr[num] > key){
        high = num - 1;
        return  twoPointLookup(arr,low,high,key)
       } else if (arr[num] < key){
        low = num + 1
        return  twoPointLookup(arr,low,high,key)
      }
    }
  • 相关阅读:
    vue:自定义指令
    vue去掉严格开发,即去掉vue-cli安装时的eslint
    vue路由6:导航钩子
    vue路由5:命名视图
    vue路由3:子路由
    vue组件通信之任意级组件之间的通信
    vue中组件通信之子父通信
    令狐冲也是个情场高手啊
    Java —— 时区(夏令时)问题
    PL/SQL 如何导出INSERT语句
  • 原文地址:https://www.cnblogs.com/xzhan/p/9214628.html
Copyright © 2011-2022 走看看