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

简介:

<?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,如需转载请自行联系原作者

相关文章
【Leetcode -441.排列硬币 -448.找到所有数组中消失的数字】
【Leetcode -441.排列硬币 -448.找到所有数组中消失的数字】
45 0
|
机器学习/深度学习 人工智能 算法
时间复杂度O(40n*n)的C++算法:修改图中的边权
时间复杂度O(40n*n)的C++算法:修改图中的边权
|
5月前
|
算法
【算法】二分算法——搜索插入位置
【算法】二分算法——搜索插入位置
|
8月前
|
算法 测试技术 C#
【数学】LeetCode1526: 形成目标数组的子数组最少增加次数
【数学】LeetCode1526: 形成目标数组的子数组最少增加次数
|
8月前
|
算法 索引 Python
如何实现二分查找算法? 要求:编写一个Python函数,输入一个有序列表和一个目标值,返回目标值在列表中的索引。如果目标值不在列表中,返回-1。
如何实现二分查找算法? 要求:编写一个Python函数,输入一个有序列表和一个目标值,返回目标值在列表中的索引。如果目标值不在列表中,返回-1。
80 0
|
算法 测试技术 C++
C++二分算法:找到最接近目标值的函数值(一)
C++二分算法:找到最接近目标值的函数值
|
算法 C# C++
C++二分算法:找到最接近目标值的函数值(二)
C++二分算法:找到最接近目标值的函数值
|
存储
LeetCode题:88合并两个有序数组,283移动零,448找到所有数组中消失的数字
LeetCode题:88合并两个有序数组,283移动零,448找到所有数组中消失的数字
73 0
|
机器学习/深度学习 数据采集 算法
快速找到离群值的三种方法
本文将介绍3个在数据集中查找离群值的Python方法
436 0
快速找到离群值的三种方法
在给定范围的数据中找到含有6的数据个数
在给定范围的数据中找到含有6的数据个数