亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用JavaScript實現一個折半查找算法

發布時間:2021-04-12 16:54:41 來源:億速云 閱讀:236 作者:Leah 欄目:web開發

使用JavaScript實現一個折半查找算法?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

折半查找代碼如下:

function binSearch(arr,data){//折半查找,也叫二分查找
    var upperBound=arr.length-1;
    var lowerBound=0;
    while(lowerBound<=upperBound){//未遍歷完
      var mid=Math.floor((lowerBound+upperBound)/2);
      document.write("當前中點為:"+mid+'<br>');//記錄選中的中點
      if(arr[mid]<data){
        lowerBound=mid+1;
      }else if(arr[mid]>data){
        upperBound=mid-1;
      }else{
        return mid;
      }
    }
    return -1;
}

那么出現了重復的,我們需要計數。計數的思想就是在找到點的位置左右開始遍歷,找到相同的則計數,找到不同的則停止遍歷,代碼如下:

function count(arr,data){//計算重復出現的次數
    var count=0;
    var position=binSearch(arr,data);//找出值所在位置
    if(position>-1){
      count++;//找到后,往左右一次遍歷直到找到不同值后break
      for(var i=position-1;i>0;i--){
        if(arr[i]==data){
          count++;
        }else{
          break;
        }
      }
      for(var i=position+1;i<arr.length;i++){
        if(arr[i]==data){
          count++;
        }else{
          break;
        }
      }
    }
    return count;
}

最后是實驗:

//實驗
var nums=[1,2,2,3,3,4,5,6,7,8,9,10,11];
var bool=binSearch(nums,3);
document.write("所在位置為:"+bool+"<br>");
document.write("含有個數為:"+count(nums,3));
//當前中點為:6
//當前中點為:2
//當前中點為:4
//所在位置為:4
//當前中點為:6
//當前中點為:2
//當前中點為:4
//含有個數為:2

完整代碼:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>JavaScript折半查找</title>
  </head>
  <body>
<script type="text/javascript">
  function binSearch(arr,data){//折半查找,也叫二分查找
    var upperBound=arr.length-1;
    var lowerBound=0;
    while(lowerBound<=upperBound){//未遍歷完
      var mid=Math.floor((lowerBound+upperBound)/2);
      document.write("當前中點為:"+mid+'<br>');//記錄選中的中點
      if(arr[mid]<data){
        lowerBound=mid+1;
      }else if(arr[mid]>data){
        upperBound=mid-1;
      }else{
        return mid;
      }
    }
    return -1;
  }
  function count(arr,data){//計算重復出現的次數
    var count=0;
    var position=binSearch(arr,data);//找出值所在位置
    if(position>-1){
      count++;//找到后,往左右一次遍歷直到找到不同值后break
      for(var i=position-1;i>0;i--){
        if(arr[i]==data){
          count++;
        }else{
          break;
        }
      }
      for(var i=position+1;i<arr.length;i++){
        if(arr[i]==data){
          count++;
        }else{
          break;
        }
      }
    }
    return count;
  }
  //實驗
  var nums=[1,2,2,3,3,4,5,6,7,8,9,10,11];
  var bool=binSearch(nums,3);
  document.write("所在位置為:"+bool+"<br>");
  document.write("含有個數為:"+count(nums,3));
  //當前中點為:6
  //當前中點為:2
  //當前中點為:4
  //所在位置為:4
  //當前中點為:6
  //當前中點為:2
  //當前中點為:4
  //含有個數為:2
</script>
  </body>
</html>

運行效果圖如下:

使用JavaScript實現一個折半查找算法

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

惠水县| 扶绥县| 藁城市| 曲水县| 贵州省| 德安县| 宝鸡市| 星子县| 临泽县| 新巴尔虎右旗| 文化| 肃宁县| 高青县| 宣恩县| 黎平县| 革吉县| 襄垣县| 云和县| 葫芦岛市| 临武县| 浠水县| 平凉市| 成都市| 水富县| 潢川县| 普兰店市| 大石桥市| 札达县| 福鼎市| 和田县| 兴文县| 敖汉旗| 阿拉尔市| 乐昌市| 栾城县| 绵阳市| 吉林市| 贵州省| 页游| 永嘉县| 鄢陵县|