zoukankan      html  css  js  c++  java
  • 算法,折半查找--javascript版

    var arr = [1,2,4,6,9,10,12,15];
    function searchKey(arr, key) {
    	var mid = parseInt(arr.length/2);
    	var midValue = arr[mid]; 
    	if(key === midValue){
    		return midValue;
    	}else if(key > midValue){
    		return searchKey(arr.slice(mid+1), key);
    	}else if(key < midValue){
    		return searchKey(arr.slice(0, mid), key);
    	}else{
    		return false;
    	}
    }
    function print(arr, key) {
    	var res = searchKey(arr, key);
    	if(typeof res === "number") {
    		console.log("找到了");
    	}else{
    		console.log("呜呜,没找到!");
    	}
    }
    print(arr, 1);
    

      缺点是不能打印出准确位置;

      下面这种参考大神的写法;

    var arr = [1,2,4,6,9,10,12,15];
    function searchKey(arr, key) {
        var high = arr.length - 1;
        var low = 0,middle,midValue;
        while(low <= high) {
            middle = parseInt( (low + high) / 2 );
            midValue = arr[middle];
            if(midValue === key) {
                return middle;
            }else if(midValue > key){
                high = middle - 1;
            }else if(midValue < key){
                low = middle + 1;
            }else{
                return "错误的参数";
            }
        }
        return false;
        
    }
    function print(arr, key) {
        var res = searchKey(arr, key);
        if(typeof res === "number") {
            console.log("找到了,位置是" + res);
        }else{
            console.log("呜呜,没找到!");
        }
    }
    print(arr, 1);

     

  • 相关阅读:
    盘子序列
    最大矩形面积
    【模板】ST表
    排队
    map循环遍历
    vue循环遍历给div添加id
    正则 匹配
    字符串拼接
    js对象追加到数组里
    二级标题左侧加粗线条
  • 原文地址:https://www.cnblogs.com/tchlu/p/6026790.html
Copyright © 2011-2022 走看看