55、PHP实现插入排序、二分查找
创始人
2024-11-15 12:10:01

题目: PHP实现插入排序

描述:

  • 思路:选择一个带插入的元素(假设从第一个开始),分别和已经插入有顺序
  • 的元素比较,如果要插入元素比比较元素小,则位置交换
function insertSort($arr){     if(!is_array($arr)) return false;     //外层循环插入次数     for($i=1;$i         $tmp = $arr[$i];//要插入的元素         //内层循环比较和插入         for($j=$i-1;$j>=0;$j--){             //发现要插入的元素小             if($tmp < $arr[$j]){                 //将后边的元素和前面的元素交换                 $arr[$j+1]=$arr[$j];                 //把前面的数设置为当前需要交换的数                 $arr[$j] = $tmp;             }         }     }     return $arr; } 

题目: 二分查找

描述:


  • 思路分析:数组中间的值floor((low+top)/2)

  • 先取数组中间的值floor((low+top)/2)然后通过与所需查找的数字进行比较,
  • 若比中间值大则将首值替换为中间位置下一个位置,继续第一步的操作;
  • 若比中间值小,则将尾值替换为中间位置上一个位置,继续第一步操作
  • 重复第二步操作直至找出目标数字
/**  * 非递归版 二分查找  *  * @param array $container  * @param       $search  * @return int|string  */ function BinaryQuery(array $container, $search) {     $top = count($container);     $low = 0;     while ($low <= $top) {         $mid = intval(floor(($low + $top) / 2));         if (!isset($container[$mid])) {             return '没找着哦';         }         if ($container[$mid] == $search) {             return $mid;         }         $container[$mid] < $search && $low = $mid + 1;         $container[$mid] > $search && $top = $mid - 1;     } } /**  * 递归版 二分查找  *  * @param array  $container  * @param        $search  * @param int    $low  * @param string $top  * @return int|string  */ function BinaryQueryRecursive(array $container, $search, $low = 0, $top = 'default') {     $top == 'default' && $top = count($container);     if ($low <= $top) {         $mid = intval(floor($low + $top) / 2);         if (!isset($container[$mid])) {             return '没找着哦';         }         if ($container[$mid] == $search) {             return $mid;         }         if ($container[$mid] < $search) {             return BinaryQueryRecursive($container, $search, $mid + 1, $top);         } else {             return BinaryQueryRecursive($container, $search, $low, $mid - 1);         }     } } 

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...