zoukankan      html  css  js  c++  java
  • jvascript 顺序查找和二分查找法

    第一种:顺序查找法

    中心思想:和数组中的值逐个比对!

        /*
         * 参数说明:
         * array:传入数组
         * findVal:传入需要查找的数
         */
        function Orderseach(array,findVal){
            var temp = false; //控制开关
            for(var i =0;i<array.length;i++){
                if(array[i] == findVal){ //逐个匹配是否相等
                    temp = true; //如果找到,temp设置为true;
                    return i;   //返回在数组的位置
                }            
            }
            if(!temp){ //如果没有找到
                return '没找到';    
            }
        }
        
        //调用:
        var arr = [5,7,66,78,99,103,126,203,1];
        document.write(Orderseach(arr,103));
        
        
        //总结:很简单的代码,大神请忽视~~~
    

      

    第二种:二分查找法

    主要思想是:(设查找的数组区间为array[left, right])

    1. 确定该期间的中间位置middle。
    2. 将查找的值findVal与array[middle]比较。若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。

    注意: 使用二分查找的数组必须是有序的

    二分法查找 ---递归

    //二分法查找   ---递归
    function binarySeach(array,findVal,left,rigth){
         var middle = Math.round((left + rigth) / 2); //确定中间的那个数
         if(left > rigth){ //如果左边的数大于右边的数,证明没有找到数
    	    document.write('找不到');
            return;
        };
        if(findVal > array[middle]){ //像右查找
             binarySeach(array,findVal,middle +1,rigth);
        }else if(findVal < array[middle]){ //像左查找
            binarySeach(array,findVal,left,middle -1);    
        }else{//显示
             document.write(middle);
        }    
     };
    

      

    调用:

     binarySeach(arr,204,0,arr.length -1); 

     

    二分法查找 ---函数循环

    //二分法查找 -- 循环
    function binarySeach1(array,findVal){
         var left = 0; //数组从下标为0开始
         var right = array.length -1; //数组结束
         while(left <= right){ //左边不能大于右边
             var middle = Math.round((left + right)/2); //取中间
             if(findVal == array[middle] ){ //
                 return middle;    
             }else if(findVal < array[middle] ){//像左查找
                 right = middle - 1; 
             }else if(findVal > array[middle]){//像右查找
                 left = middle + 1;    
             }
         }
         return '找不到';
    };

    调用:

      binarySeach1(arr,104); 

  • 相关阅读:
    Java的错误类型
    交换两个变量的值
    变量的自增、自减、自乘、自除运算
    通过Scanner从控制台获取数据
    通过args数组获取数据
    int类型与char类型的转换
    大类型向小类型转换
    小类型向大类型转换
    6 高级2 自连接 视图
    5 高级 关系 连接
  • 原文地址:https://www.cnblogs.com/zhangans/p/4831831.html
Copyright © 2011-2022 走看看