国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

JavaScript實(shí)現(xiàn)二分查找實(shí)例代碼

2019-11-19 17:27:42
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

二分查找的前提為:數(shù)組、有序。邏輯為:優(yōu)先和數(shù)組的中間元素比較,如果等于中間元素,則直接返回。如果不等于則取半繼續(xù)查找。

/** * 二分查找,遞歸實(shí)現(xiàn)。 * @param target * @param arr * @param start * @param end * @returns {*} */function binarySearch(target,arr,start,end) {  var start  = start || 0;  var end   = end || arr.length-1;  var mid = parseInt(start+(end-start)/2);  if(target==arr[mid]){    return mid;  }else if(target>arr[mid]){    return binarySearch(target,arr,mid+1,end);  }else{    return binarySearch(target,arr,start,mid-1);  }  return -1;}/** * 有序的二分查找,返回-1或存在的數(shù)組下標(biāo)。不使用遞歸實(shí)現(xiàn)。 * @param target * @param arr * @returns {*} */function binarySearch(target,arr) {  var start  = 0;  var end   = arr.length-1;  while (start<=end){    var mid = parseInt(start+(end-start)/2);    if(target==arr[mid]){      return mid;    }else if(target>arr[mid]){      start  = mid+1;    }else{      end   = mid-1;    }  }  return -1;}

寫(xiě)完有序,自然而然的想到了無(wú)序的情況如何使用二分查找呢?馬上想到先使用快排分組,分好組再二分。代碼如下:

/** * 無(wú)序的二分查找。返回true/false * @param target * @param arr * @returns {boolean} */function binarySearch(target,arr) {  while (arr.length>0){    //使用快速排序。以mid為中心劃分大小,左邊小,右邊大。    var left  = [];    var right  = [];    //選擇第一個(gè)元素作為基準(zhǔn)元素(基準(zhǔn)元素可以為任意一個(gè)元素)    var pivot  = arr[0];    //由于取了第一個(gè)元素,所以從第二個(gè)元素開(kāi)始循環(huán)    for(var i=1;i<arr.length;i++){      var item = arr[i];      //大于基準(zhǔn)的放右邊,小于基準(zhǔn)的放左邊      item>pivot ? right.push(item) : left.push(item);    }    //得到經(jīng)過(guò)排序的新數(shù)組    if(target==pivot){      return true;    }else if(target>pivot){      arr   = right;    }else{      arr   = left;    }  }  return false;}

寫(xiě)完用快速排序?qū)崿F(xiàn)的無(wú)序二分查找,仔細(xì)想了一下該算法的時(shí)間復(fù)雜度,發(fā)現(xiàn)還不如直接一個(gè)for循環(huán)來(lái)得快

以上所述是小編給大家介紹的JavaScript實(shí)現(xiàn)二分查找實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)武林網(wǎng)網(wǎng)站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 荔浦县| 九龙城区| 肇州县| 阿克苏市| 福贡县| 满洲里市| 凤城市| 神池县| 乌兰察布市| 凤台县| 呼图壁县| 江源县| 太保市| 和林格尔县| 洱源县| 台安县| 枣庄市| 汽车| 保德县| 和龙市| 东源县| 蕲春县| 鱼台县| 白城市| 清水河县| 长海县| 武山县| 洛扎县| 彰武县| 克东县| 高陵县| 深州市| 九寨沟县| 余庆县| 巩留县| 喀什市| 乡城县| 平乡县| 贵阳市| 伊宁市| 汝城县|