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+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
Mar 07 PHP
黑夜路人出的几道php笔试题
Aug 04 PHP
PHP 处理图片的类实现代码
Oct 23 PHP
浅析php中json_encode()和json_decode()
May 25 PHP
PHP根据两点间的经纬度计算距离
Oct 31 PHP
php实现webservice实例
Nov 06 PHP
php管理nginx虚拟主机shell脚本实例
Nov 19 PHP
php最简单的删除目录与文件实现方法
Nov 28 PHP
浅谈php提交form表单
Jul 01 PHP
php 微信开发获取用户信息如何实现
Dec 13 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
Jul 19 PHP
Laravel框架模板继承操作示例
Jun 11 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
memcache一致性hash的php实现方法
2015/03/05 PHP
php通过sort()函数给数组排序的方法
2015/03/18 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
2018/04/08 PHP
从阿里妈妈发现的几个不错的表单验证函数
2007/09/21 Javascript
JS弹出对话框返回值代码(asp.net后台)
2010/12/28 Javascript
IE与FireFox中的childNodes区别
2011/10/20 Javascript
javascript 系统文件夹文件操作及参数介绍
2013/01/08 Javascript
浅析hasOwnProperty方法的应用
2013/11/20 Javascript
JavaScript操作select元素和option的实例代码
2016/01/29 Javascript
jQuery实现的网页换肤效果示例
2016/09/20 Javascript
Angularjs中controller的三种写法分享
2016/09/21 Javascript
angular ngClick阻止冒泡使用默认行为的方法
2016/11/03 Javascript
利用forever和pm2部署node.js项目过程
2017/05/10 Javascript
浅谈vue中慎用style的scoped属性
2017/11/28 Javascript
angularJs-$http实现百度搜索时的动态下拉框示例
2018/02/27 Javascript
Node.js + express基本用法教程
2019/03/14 Javascript
利用JavaScript的Map提升性能的方法详解
2019/08/14 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
js实现QQ邮箱邮件拖拽删除功能
2020/08/27 Javascript
Python二进制串转换为通用字符串的方法
2018/07/23 Python
解决TensorFlow模型恢复报错的问题
2020/02/06 Python
Python ORM框架Peewee用法详解
2020/04/29 Python
HTML5网页音乐播放器的示例代码
2017/11/09 HTML / CSS
深入理解HTML5定时器requestAnimationFrame的使用
2018/12/12 HTML / CSS
Booking.com德国:预订最好的酒店和住宿
2020/02/16 全球购物
什么是Assembly(程序集)
2014/09/14 面试题
小学教师师德承诺书
2014/05/23 职场文书
中职招生先进个人材料
2014/08/31 职场文书
机关中层领导干部群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
2014年涉外离婚协议书范本
2014/11/20 职场文书
销售会议开幕词
2015/01/28 职场文书
员工自我工作评价
2015/03/06 职场文书
看雷锋电影观后感
2015/06/10 职场文书
史上最全的军训拉歌口号
2015/12/25 职场文书
python 如何获取页面所有a标签下href的值
2021/05/06 Python