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

简介:

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

相关文章
|
6月前
|
算法 测试技术 C#
C++二分查找算法:包含每个查询的最小区间
C++二分查找算法:包含每个查询的最小区间
|
11月前
|
算法 测试技术 C#
C++二分查找算法:查找和最小的 K 对数字
C++二分查找算法:查找和最小的 K 对数字
|
3月前
|
算法
【算法】二分算法——搜索插入位置
【算法】二分算法——搜索插入位置
|
6月前
|
算法 测试技术 C#
【动态规划】【数论】【区间合并】3041. 修改数组后最大化数组中的连续元素数目
【动态规划】【数论】【区间合并】3041. 修改数组后最大化数组中的连续元素数目
|
6月前
|
算法 测试技术 C#
【数学】LeetCode1526: 形成目标数组的子数组最少增加次数
【数学】LeetCode1526: 形成目标数组的子数组最少增加次数
|
6月前
|
算法 程序员 索引
【算法训练-二分查找 一】【基本二分】二分查找、在排序数组中查找元素的第一个和最后一个位置
【算法训练-二分查找 一】【基本二分】二分查找、在排序数组中查找元素的第一个和最后一个位置
56 0
|
11月前
|
算法 C# C++
C++二分算法:找到最接近目标值的函数值(二)
C++二分算法:找到最接近目标值的函数值
|
11月前
|
算法 测试技术 C++
C++二分算法:找到最接近目标值的函数值(一)
C++二分算法:找到最接近目标值的函数值
|
存储
LeetCode题:88合并两个有序数组,283移动零,448找到所有数组中消失的数字
LeetCode题:88合并两个有序数组,283移动零,448找到所有数组中消失的数字
68 0
在给定范围的数据中找到含有6的数据个数
在给定范围的数据中找到含有6的数据个数
下一篇
无影云桌面