算法复习-二分查找法

在数组中查找一个数

 var arr = [1, 3, 5, 7, 9]

普通方法

// 普通方法
            function binarySearch(arr , val){
                for(var i=0;i<arr.length;i++)
                    if(arr[i]==val)
                    return i;

            }
//ES6方法
            function binarySearch(arr , val){
                return arr.findIndex(function(value){
                    return value==val;
                });
            }

二分查找法

 // 二分查找法(只适合有序)
            // 借助三个变量 start mid end
            function binarySearch(arr, val) {
                var start = 0;
                var end = arr.length - 1;
                var mid;
                while (start <= end) {
                    mid=parseInt((start + end) / 2);
                    if (val == arr[mid])
                    //这个条件成立说明数据在左边,更新end
                        return mid;
                    else if (val < arr[mid]) {
                        //这个条件成立说明数据在右边,更新start
                        end = mid - 1;
                    } else {
                        start = mid + 1;
                    }
                }
                return -1;//用户给的数据在数组里没有找到,就返回一个-1;
            }
            console.log(binarySearch(arr, 5));


           

猜你喜欢

转载自blog.csdn.net/qq_45044074/article/details/113146178