成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

JavaScript中二分查找法和計算重復(fù)次數(shù)的示例分析

這篇文章主要介紹JavaScript中二分查找法和計算重復(fù)次數(shù)的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

在鄢陵等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計 網(wǎng)站設(shè)計制作按需求定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),營銷型網(wǎng)站,成都外貿(mào)網(wǎng)站制作,鄢陵網(wǎng)站建設(shè)費用合理。

具體如下:

javascript數(shù)據(jù)結(jié)構(gòu)與算法---檢索算法(二分查找法、計算重復(fù)次數(shù))

/*只需要查找元素是否存在數(shù)組,可以先將數(shù)組排序,再使用二分查找法*/
function qSort(arr){
  if (arr.length == 0) {
    return [];
  }
  var left = [];//存儲小于基準值
  var right = [];//存儲大于基準值
  var pivot = arr[0];
  for (var i = 1; i < arr.length; i++) {
    if (arr[i] < pivot) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
  return qSort(left).concat(pivot, qSort(right));//遞歸
}
/*二分查找法,基本原理如下:
* 將數(shù)組的第一個位置設(shè)置為下邊界(0).將數(shù)組的最后一個元素所在的位置設(shè)置為上邊界(數(shù)組的長度減1)。
* 若下邊界等于或小于上邊界,則做如下操作:
*  (1).將中點設(shè)置為(上邊界加上下邊界) 除以2.
*  (2). 如果中點的元素小于查詢的值,則將下邊界設(shè)置為中點元素所在下標加1.
*  (3). 如果中點的元素大于查詢的值,則將上邊界設(shè)置為中點元素所在下標減1.
*  (4). 否則中點元素即為要查找 的數(shù)據(jù),可以進行返回。*/
function binSearch(arr,data) {
  var lowerBound = 0;
  var upperBound = arr.length - 1;
  while(lowerBound <= upperBound) {
    var mid = Math.floor((upperBound + lowerBound)/2);
    if(arr[mid] < data) {
      lowerBound = mid + 1;
    }else if(arr[mid] > data) {
      upperBound = mid - 1;
    }else {
      return mid;
    }
  }
  return -1;
}
/*
*計算重復(fù)次數(shù)
*當binSearch()函數(shù)找到某個值時,如果在數(shù)據(jù)集中還有其他相同的值出現(xiàn),那么該函數(shù)會定位在類似值的附近。
*換句話說,其他相同的值可能會出現(xiàn)已找到值的左邊或右邊。
*如果在數(shù)據(jù)集中能找到這個值,那么這個函數(shù)將開始通過兩個循環(huán)來統(tǒng)計這個值出現(xiàn)的次數(shù)。
*第一個循環(huán)向下遍歷數(shù)組,統(tǒng)計找到的值出現(xiàn)的次數(shù),當下一個值與要查找的值不匹配時則停止計數(shù)。
*第二個循環(huán)向上遍歷數(shù)組,統(tǒng)計找到的值出現(xiàn)的次數(shù),當下一個值與要查找的值不匹配時則停止計數(shù)。
* */
function count(arr, data) {
  var count = 0;
  var position = binSearch(arr, data);
  if (position > -1) {
    ++count;
    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 = [90,43,49,15,23,2,70,23,20,95,69,23,29,26];
var list = qSort(nums);
console.log(list);
var findnum = 23;
console.log("需要查找的數(shù)據(jù)為: " + findnum);
var retVal = binSearch(list, findnum);
if (retVal >= 0) {
  console.log( "找到 " + findnum + "的位置為: "+retVal);
}else {
  console.log(" is not in array.");
}
console.log(findnum + "重復(fù)次數(shù)為"+count(list, findnum));

使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼,可得如下運行結(jié)果:

JavaScript中二分查找法和計算重復(fù)次數(shù)的示例分析

以上是“JavaScript中二分查找法和計算重復(fù)次數(shù)的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

本文題目:JavaScript中二分查找法和計算重復(fù)次數(shù)的示例分析
網(wǎng)址分享:http://jinyejixie.com/article34/ijcdpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、自適應(yīng)網(wǎng)站靜態(tài)網(wǎng)站、關(guān)鍵詞優(yōu)化微信公眾號、手機網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)
芦山县| 南澳县| 毕节市| 邓州市| 伊川县| 丰原市| 东兴市| 罗江县| 历史| 高淳县| 南漳县| 荔浦县| 盐边县| 巴南区| 临邑县| 满洲里市| 石城县| 泗洪县| 车险| 靖边县| 湖口县| 邯郸市| 达孜县| 襄樊市| 唐山市| 彭泽县| 新平| 潜江市| 永靖县| 长岭县| 天等县| 顺平县| 海林市| 上思县| 枣阳市| 余庆县| 曲沃县| 东台市| 莱州市| 进贤县| 宁都县|