二分法查找,用少量的步数找到目标

简介:

422101-20170927192505762-933572715.png

<?php

function findNum($num,$max) {
    $arr = [];
    for($i = 0 ;$i< $max;$i++) {
        $arr[$i] = $i+1;
    }

    $step = 1;
    $start = 1;
    $end   = $max;
    $temp_target = intval(($start+$end)/2);

    while($temp_target != $num) {
        echo $temp_target;
        echo "<br>";

        $step += 1;
        if ($num > $temp_target) {
            $start = $temp_target;
        } else {
            $end   = $temp_target;
        }

        $temp_target = intval(($start+$end)/2);
    }
    echo "最终目标值:".$temp_target;
    echo "<br>";


    echo "步数".$step;
}

findNum(16,10000);

小结:
算法还蛮有意思的,将数学知识,用程序实现出来。尝试着自己模拟一下,蛮有趣。


本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/7603456.html,如需转载请自行联系原作者

相关文章
|
3月前
|
算法 测试技术 C#
C++二分查找算法:包含每个查询的最小区间
C++二分查找算法:包含每个查询的最小区间
|
9天前
|
算法 测试技术 C#
【动态规划】【数论】【区间合并】3041. 修改数组后最大化数组中的连续元素数目
【动态规划】【数论】【区间合并】3041. 修改数组后最大化数组中的连续元素数目
|
3月前
|
算法 Java C++
实现一个二分搜索算法,搜索指定元素在已排序数组中的位置。(递归或者非递归实现)
实现一个二分搜索算法,搜索指定元素在已排序数组中的位置。(递归或者非递归实现)
22 0
|
4月前
|
算法 程序员 索引
【算法训练-二分查找 一】【基本二分】二分查找、在排序数组中查找元素的第一个和最后一个位置
【算法训练-二分查找 一】【基本二分】二分查找、在排序数组中查找元素的第一个和最后一个位置
29 0
|
4月前
|
算法 测试技术 C++
C++二分算法:找到最接近目标值的函数值(一)
C++二分算法:找到最接近目标值的函数值
|
4月前
|
算法 C# C++
C++二分算法:找到最接近目标值的函数值(二)
C++二分算法:找到最接近目标值的函数值
|
4月前
|
算法 测试技术 C#
C++前缀和算法的应用:得到连续 K 个 1 的最少相邻交换次数 原理源码测试用例
C++前缀和算法的应用:得到连续 K 个 1 的最少相邻交换次数 原理源码测试用例
|
5月前
|
存储
LeetCode题:88合并两个有序数组,283移动零,448找到所有数组中消失的数字
LeetCode题:88合并两个有序数组,283移动零,448找到所有数组中消失的数字
48 0
|
9月前
1240:查找最接近的元素 2020-12-27
1240:查找最接近的元素 2020-12-27
|
10月前
|
算法 索引
【基础算法】浅浅刷个小题 # 搜索插入位置 # 各位相加 # 寻找数组的中心下标 #
【基础算法】浅浅刷个小题 # 搜索插入位置 # 各位相加 # 寻找数组的中心下标 #