php实现有序数组旋转后寻找最小值方法


Posted in PHP onSeptember 27, 2018

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。

NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

1、利用二分法寻找数组中的最小元素

2、定义两个 指针left和right,指向数组的第一个元素和最后一个元素,定义一个中间指针mid

3、如果arr[left]小于arr[mid],那么把左边指针移动到mid处,mid从新计算 4.如果arr[left]大于arr[mid],那么把右边指针移动到mid处,mid从新计算,缩小范围

left=0 right=arr.length-1
while arr[left]>=arr[right]
  if right-left==1
    mid=right
    break
  mid=left+(right-left)/2
  if arr[left]<=arr[mid]
    left=mid
  else
    right=mid
return arr[mid]
<?php
$arr=array(3,4,5,6,1,2);
function minNumberInRotateArray($rotateArray){
    $left=0;//左边指针
    $right=count($rotateArray)-1;//右边指针
    //判断条件,left大于right就一直进行
    while($rotateArray[$left]>=$rotateArray[$right]){
        //left和right已经紧挨着了
        if(($right-$left)==1){
            $mid=$right;
            break;
        }  
        //中间点
        $mid=ceil($left+($right-$left)/2);
        //left小于中间点
        if($rotateArray[$left]<$rotateArray[$mid]){
            //left移动到中间点
            $left=$mid;
        }else{
            //right移动到中间点
            $right=$mid;
        }  
    }  
   
    return $rotateArray[$mid];
}
$min=minNumberInRotateArray($arr);
var_dump($min);//int(1)

以上就是php如何实现有序数组旋转后寻找最小值(代码)的详细内容,感谢大家对三水点靠木的支持。

PHP 相关文章推荐
汉字转化为拼音(php版)
Oct 09 PHP
基于mysql的论坛(3)
Oct 09 PHP
PHP中cookies使用指南
Mar 16 PHP
php压缩多个CSS为一个css的代码并缓存
Apr 21 PHP
基于Zend的Config机制的应用分析
May 02 PHP
php中的观察者模式简单实例
Jan 20 PHP
php中switch语句用法详解
Aug 17 PHP
深入解析PHP的Yii框架中的event事件机制
Mar 17 PHP
基于php判断客户端类型
Oct 14 PHP
Laravel timestamps 设置为unix时间戳的方法
Oct 11 PHP
解决Laravel自定义类引入和命名空间的问题
Oct 15 PHP
php使用gearman进行任务分发操作实例详解
Feb 26 PHP
PHP实现SMTP邮件的发送实例
Sep 27 #PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
Sep 26 #PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
Sep 26 #PHP
多个Laravel项目如何共用migrations详解
Sep 25 #PHP
php中上传文件的的解决方案
Sep 25 #PHP
PHP调用微博接口实现微博登录的方法示例
Sep 22 #PHP
PHP如何搭建百度Ueditor富文本编辑器
Sep 21 #PHP
You might like
PHP的ASP防火墙
2006/10/09 PHP
PHP下通过系统信号量加锁方式获取递增序列ID
2009/09/25 PHP
PHP开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
Php中用PDO查询Mysql来避免SQL注入风险的方法
2013/04/25 PHP
PHP图片上传代码
2013/11/04 PHP
复制本贴标题和地址的js代码
2008/07/01 Javascript
javascript 函数速查表
2010/02/07 Javascript
javascript 节点遍历函数
2010/03/28 Javascript
js页面跳转的常用方法整理
2013/10/18 Javascript
百度地图API之本地搜索与范围搜索
2015/07/30 Javascript
js创建数组的简单方法
2016/07/27 Javascript
PhotoSwipe异步动态加载图片方法
2016/08/25 Javascript
js实现StringBuffer的简单实例
2016/09/02 Javascript
JavaScript使用Range调色及透明度实例
2016/09/25 Javascript
基于JS实现移动端向左滑动出现删除按钮功能
2017/02/22 Javascript
react.js CMS 删除功能的实现方法
2017/04/17 Javascript
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
Bootstrap Table快速完美搭建后台管理系统
2017/09/20 Javascript
解决layui动态添加的元素click等事件触发不了的问题
2019/09/20 Javascript
Python去掉字符串中空格的方法
2014/03/11 Python
python在windows和linux下获得本机本地ip地址方法小结
2015/03/20 Python
查看Python安装路径以及安装包路径小技巧
2015/04/28 Python
关于Python中异常(Exception)的汇总
2017/01/18 Python
python数据清洗系列之字符串处理详解
2017/02/12 Python
Python自定义函数定义,参数,调用代码解析
2017/12/27 Python
Numpy掩码式数组详解
2018/04/17 Python
Python使用progressbar模块实现的显示进度条功能
2018/05/31 Python
浅谈python累加求和+奇偶数求和_break_continue
2020/02/25 Python
Python脚本实现监听服务器的思路代码详解
2020/05/28 Python
PyCharm 解决找不到新打开项目的窗口问题
2021/01/15 Python
用css3制作纸张效果(外翻卷角)
2013/02/01 HTML / CSS
HTML5 placeholder(空白提示)属性介绍
2013/08/07 HTML / CSS
艺术用品:Arteza
2018/11/25 全球购物
实习老师个人总结的自我评价
2013/09/28 职场文书
管道维修工岗位职责
2013/12/27 职场文书
幼儿园大班新学期寄语
2014/01/18 职场文书