zoukankan      html  css  js  c++  java
  • 快速排序和二分查找

    一、二分查找和普通查找的优缺点

    普通查找:原理简单,不需要数组有序;当元素个数很大时候,效率较低;

    二分查找,需要数组有序排列,但是查找效率高;

    二、二分查找实现

    //查找指定元素在循序数组中的索引

    function binary_search(arr,key){
      var low=0,
      high=arr.length-1;
      while(low<=high){
      	 //重新计算中间项索引位置
         var mid=parseInt((high+low)/2);
         if(key==arr[mid]){
            return mid;
         }else if(key>arr[mid]){
            low=mid+1;
         }else if(key<arr[mid]){
            high=mid-1;
         }else{
          return -1;
         }
      }
    };
    var arr=[1,2,3,4,5,6,7,8,9,10,11,12,15,29];
    console.log(binary_search(arr,10));//9
    

      

      

    三、快速排序

    function quickSort(arr){
          if(arr.length <= 1){
            return arr;
          }
    
          var baseIndex = Math.floor(arr.length/2);
          var baseVal = arr.splice(baseIndex,1)[0];//基准元素
          var left = [];
          var right = [];
          for(var i=0,len=arr.length; i<len; i++){
              if(arr[i] <baseVal){
                left.push(arr[i]);
              }else{
                right.push(arr[i]);
              }
          }
    
          return quickSort(left).concat([baseVal],quickSort(right));
        }
        
        var arr2 = [1,35,1,45,2,4,65,3,3,4,5,6,6,6];
        console.log(quickSort(arr2));
    

      

  • 相关阅读:
    HandlerThread
    handler原理
    死锁简析
    Android序列化
    AsyncTask原理
    【java线程池】
    java创建线程的三种方式
    service相关
    【hashMap】详谈
    【activity任务栈】浅析
  • 原文地址:https://www.cnblogs.com/leaf930814/p/8514094.html
Copyright © 2011-2022 走看看